我在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