1. 程式人生 > >Oracle根據RowID去重,根據having count(*)>1去重,distinct去重

Oracle根據RowID去重,根據having count(*)>1去重,distinct去重

總結下我平時工作中對於重複資料去重的3種基本方法:
一.

SELECT * FROM A WHERE A.ID NOT IN(SELECT A.ID  FROM A GROUP BY A.ID HAVING COUNT(1)>1)
這種去重是把重複的資料都去掉,不保留一條.

二.

SELECT * FROM demo A WHERE A.ROWID IN (SELECT MAX(ROWID) FROM demo B GROUP BY B.a列 ,B.c列)
注意此處前後的demo表是同一個表,ROWID的特性,我以後在補充進來,這裡不多寫。
當我們想把不是主鍵的其他一個列或多個列組合的資料不重複時,使用此條。
補充ROWID:簡單介紹,ROWID是一個偽列,一個表中的每一條資料都存在一個唯一的ROWID,所以可以再去重的時候把需要的幾列分組,既然數值一樣,那麼只取一條的前提下,求出每組裡面的唯一最大ROWID就可以了。

三.使用DISTINCT

    這個不用多說:SELECT DISTINCT 列名 FROM demo