删除a表中和b表相同的数据

来源:互联网 发布:caj转换word软件 编辑:程序博客网 时间:2024/05/20 00:14
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

删除a表中和b表相同数据
 
环境:
1、WindowsNT4.0+ORACLE8.0.4
2、ORACLE安装路径为:C:ORANT
问题提出:
在做数据转储业务的时候,如果发生操作错误,有可能出现主表和副表中都有同一种数据,这样结算的结果就有可能发生错误。


实现方法:
SQL>createtablea(
2bmchar(4),--编码
3mcvarchar2(20)--名称
4)
5/
表已建立.
SQL>insertintoavalues('1111','1111');
SQL>insertintoavalues('1112','1111');
SQL>insertintoavalues('1113','1111');
SQL>insertintoavalues('1114','1111');
SQL>insertintoavalues('1115','1111');
SQL>createtablebasselect*fromawhere1=2;
表已建立.
SQL>insertintobvalues('1111','1111');
SQL>insertintobvalues('1112','1111');
SQL>insertintobvalues('1113','1111');
SQL>insertintobvalues('1114','1111');
SQL>commit;
完全提交.
SQL>select*froma;
BMMC
------------------------
11111111
11121111
11131111
11141111
11151111
SQL>select*fromb;
BMMC
------------------------
11111111
11121111
11131111
11141111

方法一:exists子句
SQL>deletefromawhereexists(select'X'frombwherea.bm=b.bmanda.mc=b.mc);
删除4个记录.
where条件:如果两个表中都拥有相同字段的主键(primarykey),则只需比较两个主键就可以了
方法二:in子句
SQL>deletefromawhere(bm,mc)in(selectbm,mcfromb);
删除4个记录.
SQL>select*froma;
BMMC
------------------------
11151111
实际测试结论:
在表不是很大时,用in子句速度还可以忍受,而如果记录量很多时(十万条以上),in子句简直让人难以人忍受,速度奇慢。
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击