| 订阅 | 在线投稿
分享
 
 
 

Oracle数据库删除表中重复记录的常见方法

2008-08-05 07:04:55  编辑来源:互联网  国际版  评论
 
 

本文为【Oracle数据库删除表中重复记录的常见方法】的汉字拼音对照版显示拼音

  fangfayi

  delete from tb_channel a where a.rowid in

  (select max(b.rowid) from tb_channle b

  where a.policyno=b.policyno and a.classcode=b.classcode);

  zheyibanfazaishujujiluchaoguo10wanshiyibandouhuibiandehenman

  fangfaer

  --jianlilinshibiao--qingkongyuanbiao--chahuiyuanbiaoruxiali

  create table temp_emp as (select distinct * from employee) ;

  truncate table employee;

  insert into employee select * from temp_emp;

  zheyibanfashiyongyujiaodadebiaodeqingkuangyinweishikuaicaozuoduiyingyudabiaoxiaolvhuihaohenduo

  fangfasan

  --jianlixinbiao--quchongfufangru--shanchuyuanbiaoruxiali:

  select distinct * into new_table from old_table

  order by zhu jian

  drop table old_table

  exec sp_rename new_table,old_table;

  zheyibanfashiyongyujiaodadebiaodeqingkuangyinweishikuaicaozuoduiyingyudabiaoxiaolvhuihaohenduo原文
 
 
 
方法一: delete from tb_channel a where a.rowid in (select max(b.rowid) from tb_channle b where a.policyno=b.policyno and a.classcode=b.classcode); ——这一办法在数据记录超过10万时一般都会变得很慢。 方法二: --建立临时表,--清空原表,--插回原表,如下例: create table temp_emp as (select distinct * from employee) ; truncate table employee; insert into employee select * from temp_emp; ——这一办法适用于较大的表的情况。因为是块操作,对应于大表效率会好很多 方法三: --建立新表,--去重复放入,--删除原表,如下例: select distinct * into new_table from old_table order by 主 键 drop table old_table exec sp_rename new_table,old_table; ——这一办法适用于较大的表的情况。因为是块操作,对应于大表效率会好很多
󰈣󰈤
 
 
 
>>返回首页<<
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有