MySQL怎样删除重复数据,只保留一条?

news2024/11/26 12:23:39

在实际工作开发过程中,常常会遇到数据库表中存在多条数据重复了,此时我们需要删除重复数据,只保留其中一条有效的数据;

针对这种场景,我们用SQL语句该怎么实现呢?

数据准备

建表语句:

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test`  (
  `id` int(11) NULL DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `test` VALUES (1, '张三');
INSERT INTO `test` VALUES (2, '李四');
INSERT INTO `test` VALUES (4, '张三');
INSERT INTO `test` VALUES (5, '王二');
INSERT INTO `test` VALUES (6, '护具');
INSERT INTO `test` VALUES (7, '无极');
INSERT INTO `test` VALUES (8, '护具');
INSERT INTO `test` VALUES (3, '空气');
INSERT INTO `test` VALUES (9, '王二');
INSERT INTO `test` VALUES (10, '几乎');
commit;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看重复数据,并筛选

select t.name,count(1) from test t where 1=1 group by t.name ;

在这里插入图片描述

使用having语句进行筛选

select t.name,count(1) from test t where 1=1 group by t.name HAVING count(1) >1;

在这里插入图片描述

对于重复数据,保留一条数据筛选

select t.name,min(id) as  id ,count(1) from test t where 1=1 group by t.name;

在这里插入图片描述

删除重复数据

delete from test where id not in (
select  min(id)  from test t where 1=1 group by t.name ) ;

执行上述SQL语句,发现会报错:

delete from test where id not in (
select  min(id)  from test t where 1=1 group by t.name )
> 1093 - You can't specify target table 'test' for update in FROM clause
> 时间: 0.004s

导致这一原因的问题是:不能在同一表中查询的数据作为同一表的更新数据。

正确参考SQL:

(1) 创建一张表temp_table存储最终保留的数据。
create table temp_table as SELECT min( id ) as id FROM test t WHERE 1 = 1 GROUP BY t.NAME;
(2) 排除表temp_table中的数据,删除即可。
DELETE FROM test WHERE id NOT IN (SELECT * FROM temp_table);

成功删除重复数据!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

盘点科智立KEZLIY那些工业自动化环节使用的RFID读取设备

在工业自动化领域,射频识别(RFID)技术已成为提高生产效率和降低成本的重要手段。科智立KEZLIY作为国内知名的RFID设备供应商,其产品在多个工业自动化环节中得到了广泛应用。本文将为您盘点科智立KEZLIY那些工业自动化环节使用的RF…

亚马逊店铺出新品时,应该注意什么?

要想提升产品销量的话,产品质量不仅要好,同时还需要做好推广宣传,这样单单还不够,还需要做好买家评论。 现如今,由于开亚马逊店铺的人越来越多,导致开亚马逊店铺的市场竞争力也变得越来越大,以…

INDEMIND:“大+小”多机协同,实现机器人商用场景全覆盖

随着商用清洁机器人进入越来越多的场景中,单一的中型机器人并不能有效覆盖所有区域,更加细分化的产品组合正在成为新的趋势。 产品形态的“新趋势” 在商用场景中,目前的商用清洁机器人几乎均是中大型的产品形态,较大的体型意味…

低粉UP主缔造百万播放,下半年B站内容战怎么打?

都知道有热点要懂得蹭,但是等热点开始火起来的时候,腰部以下没有夯实粉丝基础的账号很难在这个内容浪潮中脱颖而出,除非内容差异化很明显,质量突出才会更容易受到关注,更多的情况是流量平平,或者稍有起伏。…

句子时态四:完成进行态(现在完成进行时、过去完成进行时、将来完成进行时、过去将来完成进行时)

课程目标(掌握前两个) 现在完成进行时(重点掌握) 定义 用法 时态标志词 过去完成进行时(重点掌握) 定义 用法 将来完成进行时 (了解拓展) 定义 用法 过去将来完成进行时&#xf…

Zookeeper的使用

一、Zookeeper简介 分布式协调框架,小型的树形结构数据共享储存系统。 zookeeper的应用场景 集群管理 注册中心 配置中心 发布者将数据发布到ZooKeeper一系列节点上面,订阅者进行数据订阅,当数据有变化时,可及时得到数据的变…

164到网络安全面试大全(附答案)

最近有不少小伙伴跑来咨询: 想找网络安全工作,应该要怎么进行技术面试准备?工作不到 2 年,想跳槽看下机会,有没有相关的面试题呢? 为了更好地帮助大家高薪就业,今天就给大家分享两份网络安全工…

HarmonyOS“一次开发,多端部署“优秀实践——玩机技巧,码上起航

随着终端设备形态日益多样化,分布式技术逐渐打破单一硬件边界,一个应用或服务,可以在不同的硬件设备之间按需调用、互助共享,让用户享受无缝的全场景体验。作为应用开发者,广泛的设备类型也能为应用带来广大的潜在用户…

怎么编辑pdf?这几种编辑技巧看看

怎么编辑pdf?PDF文件是一种非常常见的文件格式,它可以被很多程序打开,但却不容易被编辑。然而,有时候我们需要编辑PDF文件,比如在一份PDF文件中添加或删除一些内容,或者对PDF文件进行注释,签名等…

ELK安装、部署、调试(一)设计规划及准备

一、整体规划如图: 【filebeat】 需要收集日志的服务器,安装filebeat软件,用于收集日志。logstash也可以收集日志,但是占用的系统资源过大,所以使用了filebeat来收集日志。 【kafka】 接收filebeat的日志&#xff…

F5服务器负载均衡能力如何?一文了解

但凡知道服务器负载均衡这个名词的,基本都知道 F5,因为负载均衡是 F5 的代表作,换句话来说,负载均衡就是由 F5 发明的。提到F5服务器负载均衡能力如何?不得不关注F5提出的关于安全、网络全面优化的解决方案&#xff0c…

代码复现,我能行之DMP-MATLAB

代码复现,我能行——系列一 一、基础概念 Dynamic Movement Primitives (DMP),中文为动态运动基元或动态运动原语,由美国University of Southern California的Stefan Schaal教授团队于2002年提出,是一种用…

【转存】Lambda 表达式完整教程

Java Lambda表达式的一个重要用法是简化某些匿名内部类(Anonymous Classes)的写法。实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过invokedynamic指令来实现Lambda表达式的。具体原理放到下一篇。本篇我们首先感受一下使用La…

【LeetCode-中等题】114. 二叉树展开为链表

文章目录 题目方法一:前序遍历(构造集合) 集合(构造新树)方法二:原地构建方法三:前序遍历--迭代(构造集合) 集合(构造新树) 题目 方法一&#x…

中间继电器 ZQGZ-PY31 DC220V 导轨安装 品牌:JOSEF约瑟

ZQGZ-04、31、22、40导轨安装系列中间继电器用于电力系统继电保护及各种自动控制线路中。以增加保护和控制线路中的触点数量及触电容量。 系型型号 ZQGZ-04 ZQGZ-31 ZQGZ-22 ZQGZ-40 ZQGZ-RJ04 ZQGZ-RJ31 ZQGZ-RJ22 ZQGZ-RJ40 ZQGZ-PJ04 ZQGZ-PJ31 ZQGZ-PJ22 ZQGZ-PJ40 …

iPhone 15 Pro与iPhone 13 Pro:最大的预期升级

如果你在2021年首次发布iPhone 13 Pro时就抢到了它,那么你的合同很可能即将到期。虽然距离iPhone 15系列还有几周的时间,但你可能已经在想:是时候把你的旧iPhone升级为iPhone 15 Pro了吗? 我们认为iPhone 13 Pro是你现在能买到的最好的手机之一。但如果你想在2023年晚些时…

JVM解密: 解构类加载与GC垃圾回收机制

文章目录 一. JVM内存划分二. 类加载机制1. 类加载过程2. 双亲委派模型 三. GC垃圾回收机制1. 找到需要回收的内存1.1 哪些内存需要回收?1.2 基于引用计数找垃圾(Java不采取该方案)1.3 基于可达性分析找垃圾(Java采取方案) 2. 垃圾回收算法2.1 标记-清除算法2.2 标记…

国标GB28181视频平台EasyGBS国标平台智能边缘计算网关关于小区电动车进电梯的应用方案设计

一、行业背景 随着人工智能技术的不断成熟与落地,各行各业也逐渐融入AI智能检测技术,尤其是在视频监控领域,通过AI视频智能检测与分析,可以大大提高视频的自动化、智能化监控能力。比如在小区的管理中,由电动车上楼入…

了解 Socks 协议:它的过去、现在与未来

在网络世界的江湖中,有一名叫做 Socks 协议的高手,它凭借着一招“代理”绝技,在网络安全领域独步天下。今天,就让我们来了解一下这位神秘高手的过去、现在和未来。 在过去,互联网世界的江湖可谓是风起云涌,…

JavaScript 中 如何在数组中找到两个值的和等于给定的值

在JavaScript中&#xff0c;您可以使用两种常见的方法来找到数组中两个值的和等于给定的值。 方法一&#xff1a;使用双重循环 function findSum(arr, target) {for (let i 0; i < arr.length; i) {for (let j i 1; j < arr.length; j) {if (arr[i] arr[j] target…