如何删除MySQL中的重复行?

时间:2012-07-28 16:38:00

标签: mysql

我在MySQL数据库中有一些行是重复的,除了它们的ID号。

例如,我可能将其作为两行:

ID   | wordlist | category
845  | abashed  | confused
1800 | abashed  | confused

我想找到所有这些,只留下一个。

我可以使用SQL来执行此操作,还是需要编写某种程序?

为了澄清,我只想在wordlist部分获得重复。

2 个答案:

答案 0 :(得分:1)

您可以使用DELETE语句中的外部联接执行此操作:

DELETE a FROM tbl a
LEFT JOIN
(
    SELECT MIN(id) AS id
    FROM tbl
    GROUP BY wordlist
) b ON a.id = b.id
WHERE a.category = '<category here>' AND b.id IS NULL

这将消除仅针对特定类别的重复项(在wordlist列中),并保留具有最低id的重复项。

答案 1 :(得分:0)

ALTER IGNORE TABLE your_table ADD UNIQUE INDEX idx_wordlist (wordlist );