mysql刪除重複記錄/數據

單字段去重

表結構如下

在這裏插入圖片描述

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 別名.列名稱 = 值

在這裏插入圖片描述

劃重點(∩_∩)



本人程序媛一枚,因爲離港澳較近,週末兼職港澳人肉代購。

歡迎各位大佬添加本人微信,還會經常有點贊活動送價值不菲的小禮品哦。

即使現在不需要代購,等以後有了女(男)朋友、有了寶寶就肯定會需要的嘍。

動動手指頭,掃碼一下,就當是對本博文的支持嘛,也是對一個平凡、勤勞、勇敢、秀外慧中等等優點的程序媛莫大的支持哈。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章