mysql 删除重复数据详细步骤

版权声明:本文为博主原创文章,欢迎分享转载。 https://blog.csdn.net/qq_29897369/article/details/83550550

前言

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

思路

首先自己表中有重复数据,通过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)

结果

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

猜你喜欢

转载自blog.csdn.net/qq_29897369/article/details/83550550