SQL:删除重复行,并保留一行
2021/7/14 19:05:56
本文主要是介绍SQL:删除重复行,并保留一行,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
如下图所示,目的是删除红框中出现的行
可以使用关联子查询的方法来实现:
DELETE FROM deletetest t1 WHERE id <> ( SELECT MIN(t2.id) FROM deletetest t2 WHERE t1.name = t2.name AND t1.price = t2.price);
得到的结果:
原理:
通过关联子查询找出 name 和 price 都相同的行,取其中最小的 id,然后从原表中删除 id 不等于上述 id 的行。
苹果和香蕉没有重复行,而判断条件是不等号,所以不会被删除。而橘子有 3 行,其中最小的id是2,所以 id = 3 和 4 的行会被删除。
DELETE FROM 表名 AS t1 WHERE t1.唯一键 <> ( SELECT MIN( t2.唯一键 ) FROM 表名 AS t2 WHERE t1.列1 = t2.列1 AND t1.列2 = t2.列2);
如果想保留id最大的行,只需要把 MIN 改成 MAX 即可,如果需要去重的列只有一个或大于两个,则通过修改 AND 之后的部分即可实现同样的目标。
这篇关于SQL:删除重复行,并保留一行的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-08如何用关键链方法突破项目管理瓶颈?
- 2025-01-08电商人必看!6 款提升团队协作与客户满意度软件!
- 2025-01-08电商团队管理混乱?快用这 6 款软件优化协作流程!
- 2025-01-08短剧制作效率低?试试这5款任务管理工具
- 2025-01-08高效应对电商高峰,6 款团队协作软件大揭秘!
- 2025-01-08为什么外贸人都爱上了在线协作工具?
- 2025-01-08提升工作效率,从这些任务管理工具开始
- 2025-01-08新年电商订单暴增,必备的 6 款可视化协作办公软件有哪些?
- 2025-01-08短剧制作经理必备技能与工具全解析
- 2025-01-08在线协作让年货大促轻松应对!