文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-27 14:40

关注

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

SELECT MIN(cs.id) AS id ,cs.`name` , cs.class  FROM `ceshi`  cs GROUP BY cs.`name` ,cs.`class`

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

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

删除sql如下:

DELETE FROM`ceshi` csWHEREcs.`id` NOT IN (( SELECT MIN(cs.id) AS id   FROM `ceshi`  cs GROUP BY cs.`name` ,cs.`class`) )

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

直接写sql如下:

delete t1FROM ceshi t1INNER JOIN ceshi t2ON 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删除即可
在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_42260782/article/details/132702760

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯