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:删除重复行,并保留一行的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27本地多文件上传的简单教程
- 2024-11-27低代码开发:初学者的简单教程
- 2024-11-27如何轻松掌握拖动排序功能
- 2024-11-27JWT入门教程:从零开始理解与实现
- 2024-11-27安能物流 All in TiDB 背后的故事与成果
- 2024-11-27低代码开发入门教程:轻松上手指南
- 2024-11-27如何轻松入门低代码应用开发
- 2024-11-27ESLint开发入门教程:从零开始使用ESLint
- 2024-11-27Npm 发布和配置入门指南
- 2024-11-27低代码应用课程:新手入门指南