mysql删除重复记录/数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nihaoa50/article/details/89947331

单字段去重

表结构如下

在这里插入图片描述

sql语句

注意:本例中user_id为主键,user_account为理论上的唯一值,

DELETE
FROM
	cmpms_user
WHERE
	user_account IN (
		SELECT
			t.user_account
		FROM
			(
				SELECT
					user_account
				FROM
					cmpms_user
				GROUP BY
					user_account
				HAVING
					count(user_account) > 1
			) t
	)
AND user_id NOT IN (##上面的语句包含所有的重复数据,而此处将最小的值保留
	SELECT
		t2.userId
	FROM
		(
			SELECT
				min(user_id) AS userId
			FROM
				cmpms_user
			GROUP BY
				user_account
			HAVING
				count(1) > 1
		) t2
)



多字段去重

表结构如下

在这里插入图片描述
根据user_id和role_id来判断数据重复,去除重复数据

sql语句

delete a from cmpms_user_role a
where a.user_id in ( 
	SELECT t1.userId
	FROM
	(select b.user_id AS userId  from cmpms_user_role b 
	where (b.user_id,b.role_id) in (select user_id,role_id from cmpms_user_role group by user_id,role_id having count(*) > 1)) t1
) 
and a.cmpms_user_role_id not in (
	SELECT
		t2.cmpms_user_role_id
	FROM
(select min(cmpms_user_role_id) as cmpms_user_role_id from cmpms_user_role group by user_id,role_id having count(*)>1) t2
);

注意:a.cmpms_user_role_id是主键

mysql表添加别名删除的注意点

反例:

DELETE FROM 表名称 别名 WHERE 别名.列名称 = 值

添加别名删除会出现这样的问题
在这里插入图片描述

正确写法

DELETE 别名 FROM 表名称 别名 WHERE 别名.列名称 = 值

在这里插入图片描述

划重点(∩_∩)



本人程序媛一枚,因为离港澳较近,周末兼职港澳人肉代购。

欢迎各位大佬添加本人微信,还会经常有点赞活动送价值不菲的小礼品哦。

即使现在不需要代购,等以后有了女(男)朋友、有了宝宝就肯定会需要的喽。

动动手指头,扫码一下,就当是对本博文的支持嘛,也是对一个平凡、勤劳、勇敢、秀外慧中等等优点的程序媛莫大的支持哈。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/nihaoa50/article/details/89947331