You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7.34多列重复行删除方案咨询(70k数据量)

解决MySQL 5.7删除model和make重复行的问题

你原来的SQL出现全删问题,核心是表名不一致(DELETE操作car_db,子查询却查carsa),另外MySQL 5.7不允许在DELETE语句中直接引用同一张表的子查询,需要改用JOIN方式实现。

方案1:保留每组重复数据中ID最小的行(匹配你的示例期望结果)

DELETE t1
FROM `car_db` t1
JOIN `car_db` t2
ON t1.make = t2.make AND t1.model = t2.model AND t1.id > t2.id;

原理:通过自连接找到同组(make+model)中ID更大的行,删除这些行后,每组仅保留ID最小的记录。

方案2:保留每组重复数据中ID最大的行

如果需要保留最新(ID最大)的记录,使用以下语句:

DELETE t1
FROM `car_db` t1
JOIN `car_db` t2
ON t1.make = t2.make AND t1.model = t2.model AND t1.id < t2.id;

额外注意事项

  • 执行删除前务必先备份数据,或先用SELECT语句验证要删除的行:
    SELECT t1.*
    FROM `car_db` t1
    JOIN `car_db` t2
    ON t1.make = t2.make AND t1.model = t2.model AND t1.id > t2.id;
    
  • 70k数据量不大,该操作执行效率可保障,建议在业务低峰期执行。

内容的提问来源于stack exchange,提问作者Artur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:57:18