| 订阅 | 在线投稿
分享
 
 
 

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- 王朝网络 版权所有