2

我有一个带有重复条目的 mySQL 表(在某些情况下可能有多个重复项)。我有一个名为 id 的列,它可能包含重复的 id 和一个称为唯一 id 的列,顾名思义,它包含唯一的 id。使用以下 SQL 语句,我可以选择重复的行

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

但是我如何删除它们(除其中一个之外的所有)?

4

2 回答 2

2
DELETE t1 FROM test t1, test t2 WHERE t1.unique_id > t2.unique_id AND t1.id = t2.id;
于 2012-07-23T22:29:04.463 回答
1

您应该UNIQUE INDEX在唯一 id 字段上添加一个。这将防止更多重复项稍后潜入。

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

IGNORE 位将仅保留值为“unique_id”的第一行。您还应该避免在列名或表名中使用空格。它使编写 SQL 容易出错,因为您必须在名称周围使用刻度。

于 2012-07-23T23:35:03.300 回答