婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > oracle快速刪除重復的記錄

oracle快速刪除重復的記錄

熱門標簽:廣州市400電話辦理 淮安自動外呼系統開發 修改高德地圖標注 地圖標注原件 語音電話機器人營銷方案 百變地圖標注 宜賓外呼系統廠家 南通防封外呼系統運營商 語音電話機器人缺點
正在看的ORACLE教程是:oracle快速刪除重復的記錄。做項目的時候,一位同事導數據的時候,不小心把一個表中的數據全都搞重了,也就是說,這個表里所有的記錄都有一條重復的。這個表的數據是千萬級的,而且是生產系統。也就是說,不能把所有的記錄都刪除,而且必須快速的把重復記錄刪掉。

對此,總結了一下刪除重復記錄的方法,以及每種方法的優缺點。

為了陳訴方便,假設表名為Tbl,表中有三列col1,col2,col3,其中col1,col2是主鍵,并且,col1,col2上加了索引。

1、通過創建臨時表

可以把數據先導入到一個臨時表中,然后刪除原表的數據,再把數據導回原表,SQL語句如下:

creat table tbl_tmp (select distinct* from tbl);truncate table tbl;//清空表記錄insert into tbl select * from tbl_tmp;//將臨時表中的數據插回來。 
這種方法可以實現需求,但是很明顯,對于一個千萬級記錄的表,這種方法很慢,在生產系統中,這會給系統帶來很大的開銷,不可行。

2、利用rowid

在oracle中,每一條記錄都有一個rowid,rowid在整個數據庫中是唯一的,rowid確定了每條記錄是oracle中的哪一個數據文件、塊、行上。在重復的記錄中,可能所有列的內容都相同,但rowid不會相同。SQL語句如下:

delete from tbl where rowid in (select a.rowid from tbl a, tbl b where a.rowid>b.rowid and a.col1=b.col1 and a.col2 = b.col2) 
如果已經知道每條記錄只有一條重復的,這個sql語句適用。但是如果每條記錄的重復記錄有N條,這個N是未知的,就要考慮適用下面這種方法了。

3、利用max或min函數

這里也要使用rowid,與上面不同的是結合max或min函數來實現。SQL語句如下

delete from tbl awhere rowid not in (select max(b.rowid) from tbl b where a.col1=b.col1 and a.col2 = b.col2);//這里max使用min也可以 
或者用下面的語句

delete from tbl awhere rowid(select max(b.rowid) from tbl b where a.col1=b.col1 and a.col2 = b.col2);//這里如果把max換成min的話,前面的where子句中需要把""改為">" 
跟上面的方法思路基本是一樣的,不過使用了group by,減少了顯性的比較條件,提高效率。SQL語句如下:

deletefrom tbl where rowid not in (select max(rowid) from tbl tgroup by t.col1, t.col2);delete from tbl where (col1, col2) in (select col1,col2 from tblgroup bycol1,col2havingcount(*) >1)and rowidnotin(selectnin(rowid)fromtblgroup bycol1,col2havingcount(*) >1) 
還有一種方法,對于表中有重復記錄的記錄比較少的,并且有索引的情況,比較適用。假定col1,col2上有索引,并且tbl表中有重復記錄的記錄比較少,SQL語句如下4、利用group by,提高效率 

您可能感興趣的文章:
  • ORACLE查詢刪除重復記錄三種方法
  • oracle查詢重復數據和刪除重復記錄示例分享
  • 解決Oracle刪除重復數據只留一條的方法詳解
  • Oracle 查找與刪除表中重復記錄的步驟方法
  • oracle sql 去重復記錄不用distinct如何實現
  • oracle 刪除重復數據
  • 如何確定Oracle數據庫表重復的記錄
  • Oracle刪除重復的數據,Oracle數據去重復

標簽:池州 襄陽 南平 通化 股票投資 聊城 南平 嘉峪關

巨人網絡通訊聲明:本文標題《oracle快速刪除重復的記錄》,本文關鍵詞  oracle,快速,刪除,重復,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《oracle快速刪除重復的記錄》相關的同類信息!
  • 本頁收集關于oracle快速刪除重復的記錄的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 巩义市| 蕉岭县| 绍兴县| 鹿邑县| 佛坪县| 福州市| 蓝山县| 银川市| 新巴尔虎左旗| 唐河县| 法库县| 治多县| 伊通| 伊川县| 商洛市| 杂多县| 新泰市| 义乌市| 阳春市| 临清市| 巫溪县| 井研县| 元谋县| 会泽县| 叙永县| 锡林浩特市| 海盐县| 正宁县| 微山县| 桂阳县| 塔城市| 海淀区| 都兰县| 桃源县| 无棣县| 无锡市| 山丹县| 锦州市| 古浪县| 平顶山市| 都江堰市|