mysql删除重复数据
程序员文章站
2022-06-05 20:52:54
有一张学生表,有姓名和性别(0:女,1:男),假如我们想删除姓名和性别都相同的数据,这里介绍2中方法 首先看一下数据表 NO.1 保留id较小的数据 保留id较大的数据 注意最后的t1.id > t2.id不要忘记,否则会删除所有的数据,操作之前一定要先备份好数据 NO.2 总结 两种方法优缺点: ......
有一张学生表,有姓名和性别(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()
上一篇: mysql 使用order by
下一篇: 龙利鱼太好吃了,那正宗龙利鱼多少钱一斤