MySQL删除具有相同列值的重复行

标签 mysql sql

我正在清理一些数据,我想通过查找具有相同“图片 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、date、followers

我只想删除除一条重复记录以外的所有记录。哪一个都无所谓。我怎样才能做到这一点?

最佳答案

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

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;

关于MySQL删除具有相同列值的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51330951/

相关文章:

mysql - 我可以在 laravel 数据库查询中使用 if 条件吗?

php - 加载数据本地 infile 写入数据库时​​遇到问题

mysql - 连接Mysql服务器在两个数据库上运行任务

mysql - 内部连接为真

mysql - 在 SQL 中分解和计数

MySQL 查询将两个表连接在一起,并获取包含组合数据的一行

mysql - 对 mysql 中的列应用鲁棒缩放

php - 我怎样才能在 cakephp 中正确关联这些表?

mysql - #1055 - SELECT 列表的表达式 #19 不在 GROUP BY 子句中并且包含非聚合列

java - 查询以获取最近日期的记录