我有一个表在Name列中有很多重复.我想每个只保留一行.
下面列出了重复项,但我不知道如何删除重复项,只保留一个副本:
SELECT name FROM members GROUP BY name HAVING COUNT(*) > 1;
谢谢.
请参阅以下问题:从表中删除重复的行.
从那里改编的接受答案(这是我的答案,所以这里没有"盗窃"......):
假设您有一个唯一的ID字段,您可以通过简单的方式执行此操作:您可以删除除ID之外的所有相同记录,但不能删除其名称的"最小ID".
示例查询:
DELETE FROM members WHERE ID NOT IN ( SELECT MIN(ID) FROM members GROUP BY name )
如果您没有唯一索引,我的建议是简单地添加一个自动增量唯一索引.主要是因为它的设计很好,但也因为它可以让你运行上面的查询.