| 導購 | 订阅 | 在线投稿
分享
 
 
 

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

2008-08-05 07:04:55  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  方法一:

  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;

  ——这一办法适用于较大的表的情况。因为是块操作,对应于大表效率会好很多
 
 
 
方法一: 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; ——这一办法适用于较大的表的情况。因为是块操作,对应于大表效率会好很多
󰈣󰈤
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
王朝网络微信公众号
微信扫码关注本站公众号 wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味著赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有