0


mysql表中删除重复记录,只保留一条记录的操作

mysql表中两个字段重复记录,只保留一条记录的操作
例如有一张学生表
![在这里插入图片描述](https://img-blog.csdnimg.cn/429c1334a865422db756677adad9bef3.png
其中name 和 class 相同的视为重复记录,需要保留一条记录,删除重复记录,
两种操作方式如下:
方法一: group by

SELECTMIN(cs.id)AS id ,cs.`name` , cs.classFROM `ceshi`  cs GROUPBY cs.`name` ,cs.`class`

查询结果如下:
在这里插入图片描述

此操作找出了需要保留的记录,即按name、class进行分组,取出id最小的记录,删除id不在上面的记录即可,最终保留的记录的id为1、3、4、5、6、8,原表中的2、7、9、10均为要删除的重复记录
在这里插入图片描述

删除sql如下:

DELETEFROM
    `ceshi` cs
WHERE
    cs.`id` NOTIN((SELECTMIN(cs.id)AS id   FROM `ceshi`  cs GROUPBY cs.`name` ,cs.`class`))

方法二:关联,因为是同一张表,使用 left join 或者inner join都可以

直接写sql如下:

delete t1
FROM ceshi t1
INNERJOIN ceshi t2
ON t1.`name` = t2.`name`
AND t1.`term` = t2.`term`
WHERE t1.id > t2.id;

同样是保留id较小的记录,原理如下:

运行选中的代码,此时未加条件

WHERE t1.id > t2.id;

在这里插入图片描述
这是找出两张表中的name与class相同的记录的视图,加上判断条件

WHERE t1.id > t2.id;


在这里插入图片描述
仅查看t1的情况
在这里插入图片描述

对比元数据表,可以看到t1表中是id较大的记录 2、7、9、10刚好就是重复的记录,所以直接使用上面的

delete t1

删除即可
在这里插入图片描述

标签: mysql 数据库

本文转载自: https://blog.csdn.net/weixin_42260782/article/details/132702760
版权归原作者 家家小迷弟 所有, 如有侵权,请联系我们删除。

“mysql表中删除重复记录,只保留一条记录的操作”的评论:

还没有评论