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

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- 王朝網路 版權所有