我有一个包含重复条目的mySQL表(在某些情况下可能有多个重复条目)。我有一个名为id的列,它可能包含重复的id,还有一个名为唯一id的列,顾名思义,它包含惟一的id。使用下面的SQL语句,我能够选择重复的行
SELECT id,
COUNT(id) AS NumOccurrences
FROM `TABLE 3`
GROUP BY id
HAVING ( COUNT(id) > 1 )但是我如何删除(除了一个之外的所有)它们呢?
发布于 2012-07-24 06:29:04
DELETE t1 FROM test t1, test t2 WHERE t1.unique_id > t2.unique_id AND t1.id = t2.id;发布于 2012-07-24 07:35:03
您应该在唯一id字段中添加一个UNIQUE INDEX。这将防止更多的副本在以后偷偷进入。
ALTER IGNORE `TABLE 3` ADD UNIQUE INDEX (`unique_id`);忽略位将只保留值为"unique_id“的第一行。还应避免在列或表名中使用空格。这使得编写SQL容易出错,因为您必须在名称两边使用记号。
https://stackoverflow.com/questions/11621314
复制相似问题