欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[mysql] 删除重复数据,只保留一条

程序员文章站 2022-03-04 18:38:58
...

需求:

业务表有脏数据了,很多重复数据,导致报错
现要将重复数据都删掉,只留一条

实现:

1、搞一张表,模拟数据
[mysql] 删除重复数据,只保留一条

想要的结果:panda留一条、kongfu留一条

2、思路:

1、分组,将重复数据查出来
2、通过id区分,留id最小的一条
3、删除,刨除id最小的一条

3、脚本:

DELETE
FROM
	panda_test
WHERE
	panda_name IN (
		SELECT
			panda_name
		FROM
			(
				SELECT
					panda_name
				FROM
					panda_test
				GROUP BY
					panda_name
				HAVING
					count(1) > 1
			) t
	)
AND id NOT IN (
SELECT
	id
FROM
	(
		SELECT
			min(id) AS id
		FROM
			panda_test
		GROUP BY
			panda_name
		HAVING
			count(1) > 1
	) dt
)

4、结果
[mysql] 删除重复数据,只保留一条