我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中通过SQL语句删除重复记录并且只保留一条记录

目录一、单个字段的操作1、 查询全部重复的数据2、删除全部重复试题3、查询表中多余重复试题(根据depno来判断,除了rowid最小的一个)4、删除表中多余重复试题并且只留1条二、多个字段的操作总结最近在做题库系统,由于在题库中添加了重复的
2023-01-04

mysql删除重复记录并且只保留一条的实现方法

准备的测试表结构及数据插入的数据中A,B,E存在重复数据,C没有重复记录CREATE TABLE `tab` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAUL
2023-01-04

SQL删除重复的记录(只保留一条)-窗口函数row_number()

文章目录 一、关于mysql表中数据重复二、聚合函数min(id)+not in二、窗口函数row_number()四、补充:常见的窗口函数 一、关于mysql表中数据重复 关于删除mysql表中重复数据问题,本文中给到两种
2023-08-30

如何删除MySQL表中的所有重复记录?

要从表中删除重复记录,我们可以使用 DELETE 命令。现在让我们创建一个表。mysql> create table DuplicateDeleteDemo-> (-> id int,-> name varchar(100)-> );Qu
2023-10-22

access怎么删除表中的某一条记录

要删除表中的某一条记录,可以使用DELETE语句。具体步骤如下:1. 打开Access数据库并选择要操作的表。2. 在"创建"选项卡的"查询设计"组中,点击"查询设计"按钮来打开新查询窗口。3. 在新查询窗口中,点击"查询设计"工具栏中的"
2023-09-22

MySQL中查询、删除重复记录的方法大全

前言本文主要给大家介绍了关于MySQL中查询、删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍:查找所有重复标题的记录:1select title,count(*) as count from user_table group by title
2018-05-22

MySQL中查询、删除重复记录的方法大全

前言本文主要给大家介绍了关于MySQL中查询、删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍:查找所有重复
2022-08-10

编程热搜

目录