数据库中表存在重复数据,需要清理重复数据,清理后保留其中一条的情况是比较常见的需求,如何通过1条SQL准确的删除数据呢?
1....','b',40, '2022-05-24 18:00:46'),('r','f',40, '2022-05-24 18:00:46');
1.3 查看重复数据
例如c1,c2 这2个字段组合作为唯一条件...如何删除重复数据
2.1 方案一
很多研发同学习惯的思路如下:
先查出重复的记录(使用in)
再查出在重复记录但id不在每组id最大值的记录
直接将select 改为delete进行删除
查询SQL...推荐写法
基于以上情况,使用单条SQL删除的方式如下:
查询SQL:
SELECT a.*
FROM test a ,
(SELECT c1,c2,MAX(id)id FROM test...b.c1 AND a.c2=b.c2
AND a.id b.id
结果:
查询:delete a FROM test a , (select c1,c2,max(id)id from test