mysql-select-repeat

MYSQL数据库经常会遇到有重复记录的问题,需要查看哪些重复了。这里有几个方法,记录一下方便以后查看。

查找全部重复记录

  • 查找全部重复记录(可查询多个重复字段,用distinct的话就不可以)

    1
    SELECT * FROM 表 WHERE 重复字段 IN (SELECT 重复字段 FROM表 GROUP BY 重复字段 HAVING COUNT(id)>1) ORDER BY 重复字段
  • 过滤重复记录(只显示一条 id最大的)

    1
    SELECT * FROM 表 WHERE id IN (SELECT MAX(id) FROM 表 GROUP BY 重复字段)

删除重复记录

  • 删除全部重复记录(慎用)

    1
    DELETE 表 WHERE 重复字段 IN (SELECT 重复字段 FROM 表 GROUP BY 重复字段 HAVING COUNT(id)>1)
  • 保留一条(保留id最大的)

    1
    DELETE 表 WHERE id NOT IN (SELECT MAX(id) FROM 表 GROUP BY 重复字段)