我在MySQL数据库中有一些行是重复的,除了它们的ID号。如何删除MySQL中的重复行?
例如,我可能有这样的两行:
ID | wordlist | category
845 | abashed | confused
1800 | abashed | confused
我想找到所有这些,只留下一个。
我可以使用SQL来做到这一点,还是我需要编写某种程序?
为了澄清,我只想在wordlist部分获得重复项。
我在MySQL数据库中有一些行是重复的,除了它们的ID号。如何删除MySQL中的重复行?
例如,我可能有这样的两行:
ID | wordlist | category
845 | abashed | confused
1800 | abashed | confused
我想找到所有这些,只留下一个。
我可以使用SQL来做到这一点,还是我需要编写某种程序?
为了澄清,我只想在wordlist部分获得重复项。
你可以用外做到这一点凑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
。
我不想删除类别部分中的重复项。只是单词表部分。 – 2012-07-28 17:10:56
@AndrewAlexander,好的,拿出'GROUP BY'中的'category'字段。试试看。 – 2012-07-28 17:11:40
哦,废话,我删除了额外的信息,比我想要的。希望只删除在给定类别内重复的单词。不是你的错,这接近我所需要的,我给你提供了不正确的信息。 – 2012-07-28 17:14:39
ALTER IGNORE TABLE your_table ADD UNIQUE INDEX idx_wordlist (wordlist);
“关键字'index_wordlist'的重复条目'同意'” – 2012-07-28 17:05:26
如果它们在另一个表中被引用会导致数据库不正确,因为您不知道哪个ID被引用了某个特定的重复词 – codingbiz 2012-07-28 16:49:51
它们不是,导入错误。 – 2012-07-28 16:54:53