首页 > 解决方案 > MySQL删除具有相同列值的重复行

问题描述

我正在清理一些数据,我想通过查找具有相同“图片 id”和“日期”值的记录来删除重复的行:

例子:

picture_id - 2 date - "13-Jul-18"
picture_id - 2 date - "13-Jul-18"
picture_id - 2 date - "13-Jul-18"
picture_id - 2 date - "13-Jul-18"

DELETE FROM `pictures` WHERE `picture_id` = '2' AND `date` = '13-Jul-18'

表列(按顺序):ID(主键)、picture_id、日期、关注者

我只想删除除一条重复记录之外的所有重复记录。不管是哪一个。我怎样才能做到这一点?

标签: mysqlsql

解决方案


在 MySQL 中,您可以使用以下方法保留最小(或最大)的 id JOIN

DELETE p
    FROM pictures p JOIN
         (SELECT p.picture_id, p.date, MIN(id) as min_id
          FROM pictures p
          WHERE p.picture_id = 2 AND p.date = '2018-07-13' 
          GROUP BY p.picture_id
         ) pp
         ON p.picture_id = pp.picture_id AND p.date = pp.date AND p.id > p.min_id;

推荐阅读