我在MySQL数据库中有一些行是重复的,除了它们的ID号。
例如,我可能将其作为两行:
ID | wordlist | category
845 | abashed | confused
1800 | abashed | confused
我想找到所有这些,只留下一个。
我可以使用SQL来执行此操作,还是需要编写某种程序?
为了澄清,我只想在wordlist部分获得重复。
答案 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 );