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

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

针对这种场景,我们用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.rhkb.cn/news/112041.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.ssh文件夹下缺失known_hosts文件

.ssh文件夹下缺失known_hosts文件 先确认工蜂或github 添加了git生成的密钥 然后 桌面打开git bash 1、执行ssh -T gitgitlab.com 2、输入yes

kafka架构和原理详解

Apache Kafka 是一个分布式流数据平台,用于高吞吐量、持久性、可扩展的发布和订阅消息。它具有高度的可靠性,被广泛用于构建实时数据流处理、日志收集和数据管道等应用。 基本架构 1. 主题(Topic): 主题是消息的逻辑分类生产者将消息发布到特定的主题中,而消费者可以订阅…

ssm+vue海鲜自助餐厅系统源码和论文

ssmvue海鲜自助餐厅系统源码和论文068 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用&…

基于PID优化和矢量控制装置的四旋翼无人机(MatlabSimulink实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

嬴图Ultipa | 一文了解关于图数据库的一点儿干货

本篇包括以下内容点: 数据库主要技术分类 图是什么? 图的模式 图数据库 VS.关系型数据库 图数据库VS.其他NOSQL的对比 并非所有的图数据库都一样! 根据Gartner预测,“到2025年,使用图技术进行数据和分析创新…

C# 生成唯一ID

1.首先通过nuget安装yitter.idgenerator 下面的三行代码搞定

数据结构 day1

1>x.mind 2>间接定义结构体数组,进行4种方式的定义和初始化 3>定义结构体存储10辆车(车的信息:品牌、单价、颜色) 1.定义函数,实现循环输入 2.定义函数,实现排序 3.定义函数,计算红色车…

树莓派3b无屏幕登录

如果要无屏登录,烧写时最好设置,勾选WIFI ,登录密码,和SSH 树莓派操作系统下载地址 树莓派资源下载 | 树莓派实验室 无屏幕无键盘登录:新版中可能要先SSH登录,然后才能在RASPI-CONFIG中打开串口控制台 登录…

【Axure原型分享】能统计中英文字数的多行输入框

今天和大家分享能统计中英文字数的多行输入框的原型模板,在输入框里输入内容后,能够动态根据输入框的内容,统计出字符数量,包括总字数、中文字数、英文字数、数字字数、其他标点符号的字数,具体效果可以观看下方视频或…

2023-08-29 LeetCode(带因子的二叉树)

2023-08-29每日一题 一、题目编号 823. 带因子的二叉树二、题目链接 点击跳转到题目位置 三、题目描述 给出一个含有不重复整数元素的数组 arr ,每个整数 arr[i] 均大于 1。 用这些整数来构建二叉树,每个整数可以使用任意次数。其中:每…

postgresql-字符函数

postgresql-字符函数 字符串连接字符与编码字符串长度大小写转换子串查找与替换截断与填充字符串格式化MD5 值字符串拆分字符串反转 字符串连接 concat(str, …)函数用于连接字符串,并且忽略其中的 NULL 参数;concat_ws(sep, str, …) 函数使用指定分隔…

Python GUI应用程序开发之wxPython使用详解

概要 wxPython是一个强大的跨平台GUI工具包,它使用Python编程语言开发,提供了丰富的控件功能。如果你是一名Python开发者,而且希望创建一个功能齐全的桌面应用程序,那么wxPython是一个值得考虑的选择。 什么是wxPython wxPython…

执行jmeter端口不够用报错(Address not available)

执行jmeter端口不够用报错(Address not available) linux解决方案 // 增加本地端口范围 echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range// 启用快速回收TIME_WAIT套接字 sudo sysctl -w net.ipv4.tcp_tw_recycle1// 启用套接字的重用 sudo sysctl -w net.ipv4.t…

IdentityServer密码长度超长会导致跳转到登录页

应用系统项目的安全要求越来越高,基本都是采取https等加密证书传输,无法使用https的,也是要求不能明文传输内容,因此做一些等保要求,密码需要加密后才能传输给服务端,所以前端会采取一些密码手段&#xff0…

单变量图的类型与直方图绘图基础

文章目录 单变量图的类型1.直方图(histogram plot)2.密度图(density plot)3.Q-Q 图(Quantile- Quantile plot,又称分位图)4.P-P 图(Probability-Probability plot)5.经验…

【力扣】216. 组合总和 III <回溯、回溯剪枝>

【力扣】216. 组合总和 III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字 1 到 9,每个数字最多使用一次,返回所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回…

2024王道408数据结构P144 T17

2024王道408数据结构P144 T17 思考过程 先看题目,让我们判断两棵二叉树是否相似,相似指的是以下三个方面: T1和T2都是空的二叉树或T1和T2都只有一个结点T1的左子树和T2的左子树是相似的,且T1的右子树和T2的右子树是相似的。 题…

大数据项目实战(Hadoop集群搭建)

一,搭建大数据集群环境 1.2 Hadoop集群搭建 1.2.1 jdk安装 1.下载jdk (1)在根目录下创建三个子目录以备后用。具体如下: mkdir -p /export/data mkdir -p /export/software mkdir -p /export/servers (2)下载路径: 1、官网下载地址http…

APP UI自动化测试思路总结

首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去。接下来,一…

聊聊工科必备软件MATLAB

1.MATLAB的由来 MATLAB(Matrix Laboratory)最初是由美国的MathWorks公司于1980年代初开发的一种数值计算和科学数据可视化的编程环境。 MATLAB的起源可以追溯到20世纪70年代,在斯坦福大学,科学家Cleve Moler在长期从事数值计算的研…