交友约会| 杂志期刊| 小说| 论坛| 电影下载| 两性知识| 电脑知识| 汽车| 旅游| 收藏

Oracle数据库删除两表中相同数据的方法

来源:赛迪网 作者: 出处:综艺读书 2007-06-06 进入讨论组
关 键 词:数据库  windows nt  oracle  

在Oracle数据库中删除两表中相同数据的方法是用到in语句,本文通过实例来讲解删除两表中相同数据的方法。

软件环境:

1、Windows NT4.0+ORACLE 8.0.4。

2、Oracle安装路径为:C:\ORANT。

问题提出:

1、在做数据转储业务的时候,如果发生操作错误,有可能出现主表和副表中都有同一种数据,

这样结算的结果就有可能发生错误。

实现方法:

SQL> create table a (
2 bm char(4), --编码
3 mc varchar2(20) --名称
4 )
5 /

表已建立:

SQL> insert into a values('1111','1111');
SQL> insert into a values('1112','1111');
SQL> insert into a values('1113','1111');
SQL> insert into a values('1114','1111');
SQL> insert into a values('1115','1111');

SQL> create table b as select * from a where 1=2;

表已建立:

SQL> insert into b values('1111','1111');
SQL> insert into b values('1112','1111');
SQL> insert into b values('1113','1111');
SQL> insert into b values('1114','1111');

SQL> commit;

完全提交:

SQL> select * from a;

BM  MC
---- --------------------
1111 1111
1112 1111
1113 1111
1114 1111
1115 1111

SQL> select * from b;

BM  MC
---- --------------------
1111 1111
1112 1111
1113 1111
1114 1111

方法一

exists子句:

SQL> delete from a where exists (select 'X' from b where a.bm=b.bm and a.mc=b.mc);

删除4个记录。

where条件:如果两个表中都拥有相同字段的主键(primary key),则只需比较两个主键就可以了。

方法二

in子句:

SQL> delete from a where (bm,mc) in (select bm,mc from b);

删除4个记录.

SQL> select * from a;

BM  MC
---- --------------------
1115 1111

实际测试结论

在表不是很大时,用in子句速度还可以忍受,而如果记录量很多时(十万条以上),in子句速度很慢。

更多文章 更多内容请看Linux数据库宝典  Oracle 10g基础应用  城域网专题专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
综艺读书宗旨
相关专题
·数据库专栏 (4452篇文章)
·数据库处理专题 (7194篇文章)
·城域网专题 (6645篇文章)
·数据库安全技术专题 (10947篇文章)
·数据库安装与卸载 (8906篇文章)
·Oracle 10g基础应用 (4022篇文章)
·Linux数据库宝典 (11116篇文章)
·数据库相关文章 (4452篇文章)
·数据库基本处理 (253篇文章)
·数据库体系架构 (952篇文章)
热点标签: 数据库  windows nt  oracle  
最新技术文档
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容
Web 全站
综艺电脑频道编辑信箱  告诉我们您想看的专题或文章

友情互链 | 收藏本站 | 联系我们 | 在线留言 | 京ICP备08008424号|