mysql 删除重复数据详细步骤

本文详细介绍了如何在MySQL中删除重复数据的步骤与技巧。通过使用SQL语句,结合count()函数和子查询,作者展示了如何查找并删除数据库表中的重复记录,同时避免了因更新时的查询嵌套而导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本来想的删除重复数据很简答的,没想到遇到麻烦了。可能自己的大意了,平时没有注意。废话不多说接着说一下删除重复数据的思路。

思路

首先自己表中有重复数据,通过select 查询到自己有哪些是重复数据。
select from tb_user
在这里插入图片描述
1、通过count(
) 查出 大于一得就是重复的数据

SELECT user_name FROM tb_user GROUP BY user_name HAVING COUNT(*)  > 1

2、获取重复的user_id

SELECT user_id FROM tb_user WHERE user_name IN (SELECT user_name FROM tb_user GROUP BY user_name HAVING COUNT(*)  > 1)

3、比如drj 这user_name 重复数据有三条 我只需要留下user_id 最小的也就是只留下一条数据。

SELECT user_id  FROM tb_user WHERE user_id IN (SELECT user_id FROM tb_user WHERE user_name IN (SELECT user_name FROM tb_user GROUP BY user_name HAVING COUNT(*)  > 1
)  AND user_id NOT IN   (SELECT MIN(user_id) FROM tb_user GROUP BY user_name HAVING COUNT(*)  > 1
) )

4、发现查询可以 但是删除不可以。如图:
在这里插入图片描述在这里插入图片描述

原因

更新数据时使用了查询,而查询的数据又做了更新的条件,mysql不支持这种方式

解决

在之前再加一层封装

DELETE FROM tb_user WHERE user_id IN(
SELECT a.user_id FROM (
SELECT user_id FROM tb_user WHERE user_name IN (SELECT user_name FROM tb_user GROUP BY user_name HAVING COUNT(*)  > 1
)  AND user_id NOT IN   (SELECT MIN(user_id) FROM tb_user GROUP BY user_name HAVING COUNT(*)  > 1
) ) AS a)

结果

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛乌龟一起走

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值