2012-07-23 151 views
2

我有一個mySQL表重複條目(也許在某些情況下多個重複)。我有名爲id的列,其中可能包含重複的id和一個稱爲唯一id的名稱,因爲名稱中包含唯一的id。使用下面的SQL語句我可以選擇重複行如何刪除mySQL重複條目

SELECT id, 
COUNT(id) AS NumOccurrences 
FROM `TABLE 3` 
GROUP BY id 
HAVING (COUNT(id) > 1) 

但我該如何刪除(除了其中之一)?

回答

2
DELETE t1 FROM test t1, test t2 WHERE t1.unique_id > t2.unique_id AND t1.id = t2.id; 
0

您應該在唯一ID字段中添加一個UNIQUE INDEX。這將防止更多的重複在後面偷偷摸摸。

ALTER IGNORE `TABLE 3` ADD UNIQUE INDEX (`unique_id`); 

IGNORE位將只保留值爲「unique_id」的第一行。您還應該避免在列名或表名中使用空格。它使得編寫SQL錯誤變得容易,因爲您必須在名稱周圍使用刻度。