【发布时间】:2010-02-10 11:18:18
【问题描述】:
有没有办法从 MySQL 数据库中删除所有重复行?
【问题讨论】:
-
“重复行”是什么意思,是指完全相同的行还是重复的列值?
-
除了id之外的每一列都是一样的
标签: mysql
有没有办法从 MySQL 数据库中删除所有重复行?
【问题讨论】:
标签: mysql
几年前,有人要求提供一种删除重复项的方法。子选择使得在 MySQL 4.1 中这样的查询成为可能:
DELETE FROM some_table WHERE primaryKey NOT IN
(SELECT MIN(primaryKey) FROM some_table GROUP BY some_column)
当然,如果您想保留具有重复值的最新记录而不是具有重复值的最旧记录,您也可以使用MAX(primaryKey)。
要了解其工作原理,请查看此查询的输出:
SELECT some_column, MIN(primaryKey) FROM some_table GROUP BY some_column
如您所见,此查询返回包含 some_column 的每个值的第一条记录的主键。那么,从逻辑上讲,在这个结果集中没有找到的任何键值都必须是重复的,因此应该删除它。
【讨论】:
您可能会对这些问题/答案感兴趣:
处理大桌子时经常使用的想法是:
select distinct)这个原则的好处是您可以在删除旧表之前验证新表中的内容 - 总是很高兴检查这类事情^^
【讨论】: