如何删除MySQL中的重复行?

如何删除MySQL中的重复行?,mysql,Mysql,我在MySQL数据库中有一些行是重复的,除了它们的ID号 例如,我可以将其分为两行: ID | wordlist | category 845 | abashed | confused 1800 | abashed | confused 我想找到所有的,只留下一个 我可以使用SQL来实现这一点,还是需要编写某种程序 为了澄清,我只想在wordlist部分获得重复项。您可以通过DELETE语句中的外部联接来实现这一点: ALTER IGNORE TABLE your_table ADD

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

例如,我可以将其分为两行:

ID   | wordlist | category
845  | abashed  | confused
1800 | abashed  | confused
我想找到所有的,只留下一个

我可以使用SQL来实现这一点,还是需要编写某种程序


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

您可以通过DELETE语句中的外部联接来实现这一点:

ALTER IGNORE TABLE your_table ADD UNIQUE INDEX idx_wordlist (wordlist );
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最低的一个。

如果它们在另一个表中引用,则会导致数据库不正确,因为您不知道某个重复的WordReplicate条目引用了哪个id键“index\u wordlist”的“agreeable”我不想这样做删除类别部分中的重复项。只有单词列表部分。@AndrewAlexander,好的,在GroupBy中取出了category字段。试试看。哦,糟了,我用这个删除了我不想删除的额外信息。只想删除给定类别中重复的单词。这不是你的错,这接近我所需要的,我给了你不正确的信息。@AndrewAlexander,请告诉我你将此打包在一个事务中并能够回滚;。。。或者在某处备份=。你不应该在生活数据上这样做