可能重复:
如何删除 MySQL 表中的重复项
我将纯文本文件中的数据导入 mysql 数据库。现在我发现我有重复的条目,我想删除它们。重复项由不是主键的键标识。请提醒我必须保留其中一件重复的物品。
表 T1 具有三个重复项,例如:
ID(唯一,主键) REAL_ID(char(11))
1 '01234567890' 2 '01234567891' 3 '01234567891' 4 '01234567891' ...
现在,我用
SELECT ID AS x, COUNT(*) AS y FROM T1 GROUP BY x HAVING y>1;
来识别重复项。结果我
+--------+-------------+ | 身份证 | REAL_ID | +--------+-------------+ | 1 | 01234567891 | | 2 | 01234567891 | | 3 | 01234567891 | +--------+-------------+
我什至可以构建我必须删除的 Id 列表:
SELECT ID
FROM T1
RIGHT JOIN ( (SELECT ID AS x, COUNT(*) AS y
FROM T1
GROUP BY x
HAVING y>1) AS T2 ) ON (T2.x=T1.REAL_ID) LIMIT 1,100;
结果是
+--------+-------------+ | 身份证 | REAL_ID | +--------+-------------+ | 2 | 01234567890 | | 3 | 01234567890 | +--------+-------------+
现在,我需要有关如何删除这些条目的帮助。
由于不可能将 DELETE 与子查询结合使用,我试图标记列 REAL_ID 中的所有重复条目,然后使用
DELETE FROM T1 WHERE REAL_ID='flag';
但我不知道如何标记这些条目。