1. 程式人生 > >Mysql資料庫刪除重複資料

Mysql資料庫刪除重複資料

最近因為發現數據庫中的表有髒資料,需要維護。這些髒資料就是重複資料,需要將其刪除。

現假設有一張test表,主鍵欄位為num,還有id,one,two三個欄位。假設id規定只能有一條記錄(即需要為id建立聯合唯一索引)。表中資料如下:

可以看出:表中資料明顯有不滿足條件的重複資料。

解決方法:使用一箇中間臨時表過渡~~

先檢視需要保留的記錄的id

先檢視重複記錄的最小id

SELECT id from test where id in (SELECT MIN(id) from test GROUP BY id having count(id )>1)

再檢視沒有重複的記錄id

SELECT id from test GROUP BY id having count(id)=1

首先,建立一個臨時表如下:

Sql程式碼 
  1. CREATE TABLE tmp AS select id from test where id not in (SELECT id from test where id in (SELECT MIN(id) from test GROUP BY id having count(id )>1) or id in(SELECT MIN(id) from test GROUP BY id having count(id)=1))

 這張臨時表記錄了重複記錄裡所有需要刪除的id。

接下來,刪除不在裡面的記錄即可:

Sql程式碼   收藏程式碼
  1. DELETE FROM test WHERE id NOT IN(SELECT * FROM tmp

 檢查下現在的記錄:

 發現,記錄終於“乾淨”了。。重複性的記錄被成功刪除了!