2015-03-03 51 views
1

我已經重複的記錄,我不小心插入到表中,我發現他們使用count()查詢刪除複製項,像這樣:從數據庫

select _clm1, count(_id) as count from _tableName group by _clm1 having count > 1; 

難道還有其他的查詢,我可以附加到這一點,擦除重複的條目,而每個都保持原狀?

+0

可能的重複[如何刪除沒有臨時表的MySQL表中的所有重複記錄](http://stackoverflow.com/questions/14046355/how-do-i-delete-all-the-duplicate- records-in-a-mysql-table-without-temp-tables) – SpringLearner 2015-03-03 05:16:03

回答

2
DELETE FROM _tableName WHERE _id NOT IN(SELECT _id FROM _tableName GROUP BY _clm1) 
+0

大錯誤 - 你放棄了HAVING子句 - 如果他的表中有不是重複項的條目,那麼你將刪除那些帶有這個項的唯一副本查詢。 – 2015-03-03 05:00:41

+0

該查詢應該刪除'_clm1'的所有重複項。 – winston86 2015-03-03 05:10:01

+0

是的......但我認爲值得指出的是,如果表中有任何單個記錄不是重複的,那麼您的查詢也會刪除這些記錄。您應該將'having'子句添加回子查詢中,以防止出現這種情況,因爲這很可能不是OP所想到的。 (這可能會或可能不適用於他,但對於未來的讀者來說,這仍然很重要,我指出)。 – 2015-03-03 05:19:44

0

我想在我的項目和this鏈接幫助我的同一件事。

我希望它能幫助你。

0

首先從您上面的選擇查詢發現有重複行的ID的

那麼火刪除查詢通過他們的ID刪除只有那些重複的條目。