有一张学生表,有姓名和性别(0:女,1:男),假如我们想删除姓名和性别都相同的数据,这里介绍2中方法
首先看一下数据表
| 编号 | 姓名 | 性别 |
| 1 | 王璐 | 0 |
| 2 | 李萌 | 0 |
| 3 | 张帅 | 1 |
| 4 | 李萌 | 0 |
| 5 | 张帅 | 1 |
| 6 | 刘涛 | 1 |
NO.1
保留id较小的数据
DELETE t1 FROM student t1, student t2 WHERE t1.name = t2.name AND t1.sex = t2.sex AND t1.id > t2.id
保留id较大的数据
DELETE t1 FROM student t1, student t2 WHERE t1.name = t2.name AND t1.sex = t2.sex AND t1.id < t2.id
注意最后的t1.id > t2.id不要忘记,否则会删除所有的数据,操作之前一定要先备份好数据
NO.2
INSERT INTO student_tmp(name, sex) SELECT DISTINCT name, sex FROM student
总结
两种方法优缺点:
方法二所需时间更短,但是方法二当主键为uuid时,需要处理一下,可将把主键设置为int自增,然后执行下面的sql就可以了。
UPDATE student_tmp SET id = uuid()
继续阅读与本文标签相同的文章
-
斩获三个“全国第一”,漳州有一家“隐形冠军”企业
2026-05-18栏目: 教程
-
经历8个月改造,岗顶百脑汇“转型回归”
2026-05-18栏目: 教程
-
ROKU流媒体聚合平台终将变革电视机操作系统和流媒体的观看方式
2026-05-18栏目: 教程
-
权威报告:中国专利申请连续8年居首,占世界一半
2026-05-18栏目: 教程
-
新技术:AI可快速准确检测因糖尿病造成的视网膜病变
2026-05-18栏目: 教程
