我有一个mySQL表重复条目(也许在某些情况下多个重复)。我有名为id的列,其中可能包含重复的id和一个称为唯一id的名称,因为名称中包含唯一的id。使用下面的SQL语句我可以选择重复行如何删除mySQL重复条目
SELECT id,
COUNT(id) AS NumOccurrences
FROM `TABLE 3`
GROUP BY id
HAVING (COUNT(id) > 1)
但我该如何删除(除了其中之一)?
我有一个mySQL表重复条目(也许在某些情况下多个重复)。我有名为id的列,其中可能包含重复的id和一个称为唯一id的名称,因为名称中包含唯一的id。使用下面的SQL语句我可以选择重复行如何删除mySQL重复条目
SELECT id,
COUNT(id) AS NumOccurrences
FROM `TABLE 3`
GROUP BY id
HAVING (COUNT(id) > 1)
但我该如何删除(除了其中之一)?
DELETE t1 FROM test t1, test t2 WHERE t1.unique_id > t2.unique_id AND t1.id = t2.id;
您应该在唯一ID字段中添加一个UNIQUE INDEX
。这将防止更多的重复在后面偷偷摸摸。
ALTER IGNORE `TABLE 3` ADD UNIQUE INDEX (`unique_id`);
IGNORE位将只保留值为“unique_id”的第一行。您还应该避免在列名或表名中使用空格。它使得编写SQL错误变得容易,因为您必须在名称周围使用刻度。