2015-03-03 48 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删除只有那些重复的条目。