麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Oracle > 正文

oracle快速刪除重復的記錄

2024-08-29 13:57:33
字體:
來源:轉載
供稿:網友
正在看的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,提高效率 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩视频一区二区三区四区 | 羞羞色网站 | 久久国产28| 国产精品成aⅴ人片在线观看 | 精品国产一区二区三区四 | 欧美精品电影一区 | 欧美一级高清免费 | 亚欧在线免费观看 | 毛片在线免费 | 毛片毛片免费看 | 一级电影免费在线观看 | av在线免费网址 | 一级做a在线观看 | 中文字幕在线观看亚洲 | 精品国产精品久久 | 一级电影在线观看 | 在线免费日本 | 国产91中文字幕 | 欧美成在线视频 | 黄色免费在线视频网站 | 91精品国产91久久久久久 | 色综合久久久久久久久久久 | 伊人久久国产精品 | 一级电影免费在线观看 | 久久久婷婷一区二区三区不卡 | 久久国产精品电影 | 国产精品视频免费网站 | 亚洲精品午夜在线 | 国产1区2 | 成年人黄视频 | 国产乱淫a∨片免费观看 | hdhdhd69ⅹxxx黑人| 日韩字幕在线 | 欧美性受xxxx白人性爽 | 国产日韩三区 | 亚洲人成中文字幕在线观看 | 久久国产精品成人免费网站 | h视频免费观看 | 久久www视频 | a级毛片免费观看在线播放 日本aaa一级片 | 国产亚洲美女精品久久久2020 |