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

2016-01-29 14:42 185 1 收藏

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

【 tulaoshi.com - 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 11111112 11111113 11111114 11111115 1111SQL select * from b;BM  MC---- --------------------1111 11111112 11111113 11111114 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子句速度很慢。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

来源:http://www.tulaoshi.com/n/20160129/1493989.html

延伸阅读
示例表结构和数据集 为了演示和比较各种数据导入方法,我假定数据导入任务是将外部文件数据导入到 Oracle 数据库的CALLS表中,外部数据文件包含十万条呼叫中心记录,将近 6MB 的文件大小,具体的数据示例如下: 82302284384,2003-04-18:13:18:58,5001,投诉,手机三包维修质量 82302284385,2003-04-18:13:18:59,3352,咨询,供水热线的号码 82...
把表达式True=False放到表的ValidationRule属性就能锁上。HardLockTable?实现了该功能。 声明 PublicMyDBAsDatabase DimDummyAsInteger 函数 FunctionHardLockTable(ByValwhichActionAsString,?ByValaTableAsString)AsInteger OnErrorGoToHardLockTableError HardLockTable=True SelectCasewhichAction C...
作为一个Oracle数据库开发者或者DBA,在实际工作中经常会遇到这样的问题:试图对库表中的某一列或几列创建唯一索引时,系统提示ORA-01452:不能创建唯一索引,发现重复记录。 下面我们以表code_ref为例来讨论这个问题及其解决办法。 ERROR位于第1行: ORA-01452: 无法 CREATE UNIQUE INDEX;找到重复的关键字 Oracle系...
    1.首先查看表空间的名字和所属文件 select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;      2.增加数据文件 alter tablespace users add datafile '/u01/Oracle/oradata/umail/users02.dbf' size 4000M a...
(1)启动,一直到出现如图6.44所示的界面。 (2)出现如图6.45所示的界面。 (3)出现如图6.46所示的界面。 (4)出现如图6.47所示的界面。 (5)成功删除数据库后出现如图6.48所示的界面。单击否按钮。

经验教程

715

收藏

47
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部