2012-07-28 136 views
0

我在MySQL數據庫中有一些行是重複的,除了它們的ID號。如何刪除MySQL中的重複行?

例如,我可能有這樣的兩行:

ID | wordlist | category 
845 | abashed | confused 
1800 | abashed | confused 

我想找到所有這些,只留下一個。

我可以使用SQL來做到這一點,還是我需要編寫某種程序?

爲了澄清,我只想在wordlist部分獲得重複項。

+0

如果它們在另一個表中被引用會導致數據庫不正確,因爲您不知道哪個ID被引用了某個特定的重複詞 – codingbiz 2012-07-28 16:49:51

+0

它們不是,導入錯誤。 – 2012-07-28 16:54:53

回答

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

+0

我不想刪除類別部分中的重複項。只是單詞表部分。 – 2012-07-28 17:10:56

+0

@AndrewAlexander,好的,拿出'GROUP BY'中的'category'字段。試試看。 – 2012-07-28 17:11:40

+0

哦,廢話,我刪除了額外的信息,比我想要的。希望只刪除在給定類別內重複的單詞。不是你的錯,這接近我所需要的,我給你提供了不正確的信息。 – 2012-07-28 17:14:39

0
ALTER IGNORE TABLE your_table ADD UNIQUE INDEX idx_wordlist (wordlist); 
+0

「關鍵字'index_wordlist'的重複條目'同意'」 – 2012-07-28 17:05:26