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