如何獲取表中重複的數據

在一張表中某個字段下面有重複記錄,有很多方法,但是有一個方法,是比較高效的,如下語句:

select data_guid from adam_entity_datas a where a.rowid > (select min(b.rowid) from adam_entity_datas b where b.data_guid = a.data_guid)

如果表中有大量數據,但是重複數據比較少,那麼可以用下面的語句提高效率

select data_guid from adam_entity_datas where data_guid in (select data_guid from adam_entity_datas group by data_guid having count(*) > 1)

此方法查詢出所有重複記錄了,也就是說,只要是重複的就選出來,下面的語句也許更高效

select data_guid from adam_entity_datas where rowid in (select rid from (select rowid rid,row_number()over(partition by data_guid order by rowid) m from adam_entity_datas) where m <> 1)

目前只知道這三種比較有效的方法。

第一種方法比較好理解,但是最慢,第二種方法最快,但是選出來的記錄是所有重複的記錄,而不是一個重複記錄的列表,第三種方法,我認爲最好。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章