查询删除MySQL重复数据

article/2025/10/5 11:16:19

查询删除MySQL重复数据

  1. 新建表users
CREATE TABLE `users` (`user_id` int(11) NOT NULL AUTO_INCREMENT,`user_name` varchar(20) NOT NULL,`user_vip` int(11) DEFAULT '0',`user_vips` int(11) DEFAULT '0',`user_password` varchar(20) DEFAULT NULL,PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
  1. 插入数据
INSERT INTO users(user_name,user_vip,user_vips,user_password) VALUES('www',1,1,'111');
INSERT INTO users(user_name,user_vip,user_vips,user_password) VALUES('wxs',1,1,'222');
INSERT INTO users(user_name,user_vip,user_vips,user_password) VALUES('wxs',1,1,'111');
INSERT INTO users(user_name,user_vip,user_vips,user_password) VALUES('wxs',1,1,'111');
  1. 查询user_name重复的数据
SELECT * FROM users WHERE user_name IN (SELECT user_name FROM users GROUP BY user_name HAVING COUNT(user_name) > 1);

image-20220119172146903

  1. 删除重复的数据,只保留一条

    • 首先查询出,除了user_id 最小的一行之外的所有重复数据(上图除了user_id为 6 的其余行)
    SELECT * FROM users WHERE user_name IN (SELECT user_name FROM users GROUP BY user_name HAVING COUNT(user_name) > 1) AND user_id NOT IN (SELECT MIN(user_id) from users GROUP BY user_name HAVING COUNT(user_name) > 1);
    

    image-20220119173050264

    • 然后删除这些重复行 (如果你直接替换SELECT * 为 DELETE 你会看到如下报错)

    image-20220119173733340

    大意为:不能在同一个sql语句中,先select同一个表的某些值,然后再update(更新)这个表

    • 修改上面的sql 语句为:

      DELETE FROM users WHERE user_name IN (
      SELECT un FROM (SELECT user_name AS un FROM users GROUP BY user_name HAVING COUNT(user_name) > 1) as a) 
      AND user_id NOT IN (
      SELECT ui from (SELECT MIN(user_id) AS ui FROM  users GROUP BY user_name HAVING COUNT(user_name) > 1) AS b);
      

      image-20220119175402121

      给作为条件查询的表起一个别名就可以解决了


http://chatgpt.dhexx.cn/article/oNTU9lBF.shtml

相关文章

MySQL SELECT COUNT 一对多关联查询去重

文章目录 1 摘要2 问题复现3 解决办法 1 摘要 在实际项目中,通常会遇到多表关联查询的问题,这个时候在做分页查询的时候,可能会出现因关联关系而导致查询数量不正确的问题。如一对多 关系时,统计一 的一方数量,这时使…

Mysql 查询重复数据、去除重复数据操作

表 client 按照 client_id 字段查重,查出 client_id 重复的字段的 id : SELECT c.id from client c where c.client_id in ( SELECT c.client_id #, COUNT(*) from client c group by c.client_id having COUNT(*) > 1 ); 表数据去重操作…

MySQL 查询表中重复数据

查询重复手机号 SELECTuser_mobile FROMt_user GROUP BYuser_mobile HAVINGCOUNT( user_mobile ) > 1; 查询重复的手机号及数量 SELECTuser_mobile,COUNT(*) AS count FROMt_user GROUP BYuser_mobile HAVINGcount > 1; 查询所有重复的手机号的详细信息 SELECT* …

mysql 查询重复数据并删除

表名: articles , 内容重复字段:title, 准备过程: Navicate 数据表导出sql,将导出dsql导入到本地测试库,查看title字段为varchar类型且没有索引,本地库title设置title字段普通索引…

【MySQL】mysql:重复数据查询 sql

目录 一、准备测试表 (1)创建表 (2)查询表 (3)删除表 二、准备测试数据 (1)插入数据 (2)查询数据 三、重复数据查询 (1)查询…

mysql查询重复数据

表全部数据 ------------------- 1 查询people_no重复的记录 select * from people where people_no in (select people_no from people group by people_no having count(people_no) > 1); ---------------------- 2 查询people_no重复的记录 ,排除最小id…

mysql 查询数据库重复数据

数据库中有重复数据时,用到哪些sql语句? 建表: CREATE TABLE user (id bigint(255) NOT NULL AUTO_INCREMENT,name varchar(20) COLLATE utf8mb4_general_ci NOT NULL DEFAULT COMMENT 名称,age int(2) NOT NULL DEFAULT 0,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT5…

mysql查询表里的重复数据方法

1 2 3 4 INSERT INTO hk_test(username, passwd) VALUES (qmf1, qmf1),(qmf2, qmf11) delete from hk_test where usernameqmf1 and passwdqmf1 MySQL里查询表里的重复数据记录: 先查看重复的原始数据: 场景一:列出username字段有重读的…

mysql过滤表中重复数据,查询表中相同数据的最新一条数据

先查询表几条demo数据,名字相同,时间不同 select id,name,create_date from sys_user 方法1:最简单,且字段全部相同,排除其他字段不同; 先对表按照时间desc排序,在查询该层使用group by 语句&#xff0…

python matplotlib 在指定的两个点之间连线

为了找到matplotlib在两个点之间连线的方法真是费了好大功夫,最后还是决定用简单的 plt.plot 来解决。如果有好多对点,则可以通过循环实现连接,还可以用 plt.arrow 画箭头,具体可参考这里 import matplotlib.pyplot as pltx [[1,…

1.11.0 pyflink使用例子

官网链接 https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/python/ python版本要求3.5及以上 安装pyflink python -m pip install apache-flink 如果安装下载太慢会time-out , 换pip源 代码 table_api方式 from pyflink.datastream import St…

Pypeline:一种实现Anylogic与Python连接的新工具

Pypeline:一种实现Anylogic与Python连接的新工具 Pypeline背景Pypeline安装方法和环境配置要求Pypeline使用方法 Pypeline背景 Pypeline是由Anylogic官方团队推出的一个功能插件,旨在实现运行中的Anylogic模型和本地安装好的Python的链接。换句话说就是…

Python的连接符

python的连接符主要有 加号()、逗号(,)、空格( ) 、反斜线(\)、join()的方式、 加号() #注意,只能连接字符串,如果一个…

在 Python 中连接列表——如何连接列表

将两个或多个字符串、列表或其他数据结构组合成单个实体的过程在编程中称为串联。 串联产生一个新对象,其中包含原始对象的所有组件,并按串联顺序排列。 字符串上下文中的连接是指将一个字符串连接到另一个字符串的末尾以创建更长的字符串。例如&#xf…

win10磁盘管理_win10合并磁盘分区教程

Win10怎么合并磁盘分区?在首次安装系统时我们需要对硬盘进行分区,但是在系统正常使用时也是可以对硬盘进行合并等操作的。许多用户在使用电脑的过程中可能都会遇到磁盘空间不够用的情况,那么对于磁盘空间不足,我们可以通过合并磁盘分区来解决…

win10磁盘管理 磁盘分区和合并

一、磁盘分区管理 如果是只需要给单个磁盘分区进行划分的话,我们可以采用电脑自带的磁盘管理工具进行操作。具体的步骤如下: 第一步:右击开始菜单图表,选择磁盘管理打开 第二步:在新弹出的窗口的右下边可以看到磁盘&…

计算机硬盘合并怎么弄,如何将分区的硬盘合并为一个磁盘?

使用Windows磁盘管理将两个硬盘都转换为动态磁盘。请参阅Microsoft的介绍。要将基本磁盘升级为动态磁盘,请右键单击“我的电脑”,然后选择“管理”以打开计算机管理控制台。在计算机管理中,单击“磁盘管理”,右键单击要升级到动态…

Windows 10 创建 删除 合并磁盘分区

Windows 10 创建 删除 合并磁盘分区 右键我的电脑 管理 磁盘管理 选择一个空间比较大的磁盘分区 右键 压缩卷 自己选择一个合适的压缩范围,进行压缩 新建分区完成 右键新建分区 选择添加卷 看新建完成的F盘 新建分区就结束啦 然后是删除分区磁盘: …

计算机如何将两个磁盘合在一起,win10怎么把电脑自带的两个磁盘合并到一起

2019-10-06阅读(447) 合并分区时,要扩展的磁盘没有“扩展卷”选项,是因为整个硬盘上没有空白卷可扩展。所以,要合并分区,应该先准备出要合并的空间大小。方法步骤进入磁盘管理:按win+x选磁盘管理,进主界面2.如要将上图1G的恢复分区合并到C盘,应:直接删除该恢复分区,得…

Win10电脑如何合并磁盘分区

电脑空间不足怎么办?很多网友可能都被这个问题困扰过,其实我们可以通过管理磁盘分区来缓解空间不足的问题,把多余的空间合并起来就行了,现在来看看该如何操作吧。 更多系统教程尽在小白系统重装官网 系统:win10专业版…