2012-07-23 155 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错误变得容易,因为您必须在名称周围使用刻度。