从MySQL表中删除重复行

时间:2010-02-10 11:18:18

标签: mysql

有没有办法从MySQL数据库中删除所有重复行?

2 个答案:

答案 0 :(得分:1)

几年前,有人要求删除重复项的方法。子选择使得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的每个值的第一条记录的主键。从逻辑上讲,此结果集中未找到的任何键值必须是重复的,因此应将其删除。

答案 1 :(得分:1)

这些问题/答案可能会让您感兴趣:

当你使用大桌子时经常使用的想法是:

  • 创建新表
  • 在该表中插入唯一记录(即原始表中只有一个版本的副本,通常使用select distinct
  • 并在您的应用程序中使用该新表;或删除旧表并将新表重命名为旧名称。

这个原则的好处是你有可能在放弃旧表之前验证新表中的内容 - 总是很好检查那种东西^^

相关问题