MySql根据字段名查询重复记录并删除!只保留一条

举报
Java李杨勇 发表于 2022/08/31 21:00:27 2022/08/31
【摘要】 最近在处理业务数据的时候!在几W条记录里存在着些相同的记录,如何用SQL语句,删除掉重复的呢?可以用以下方法进行处理其实很简单!就是查找表中多余的重复记录,重复记录是根据单个字段来查询、然后删除其他重复的记录即可查询重复记录SELECT id ,title from topic GROUP BY title HAVING count(*) > 1;​编辑这样查出来的结果比较乱查询全部的重...

最近在处理业务数据的时候!在几W条记录里存在着些相同的记录,如何用SQL语句,删除掉重复的呢?

可以用以下方法进行处理

其实很简单!就是查找表中多余的重复记录,重复记录是根据单个字段来查询、然后删除其他重复的记录即可

查询重复记录

SELECT  id ,title from  topic GROUP BY title HAVING count(*) > 1;

编辑

这样查出来的结果比较乱

查询全部的重复记录并分组

​​​​SELECT
	* 
FROM
	topic 
WHERE
	title IN ( SELECT title FROM topic GROUP BY  title HAVING Count(*)> 1 ) 
	AND title IN (
	SELECT
		title 
	FROM
		topic 
	GROUP BY
		title
HAVING
	count(*)> 1) ORDER BY title

对查询结果进行分组根据需要的字段 

查询除第一条外的多余数据

SELECT
	*
FROM
	topic
WHERE
	id NOT IN (
		SELECT
			dt.minId
		FROM
			(
				SELECT
					MIN(id) AS minId
				FROM
					topic
				GROUP BY
				title
			) dt
	)
ORDER BY
	title

删除第一条外的多余数据

DELETE
FROM
	topic
WHERE
	id NOT IN (
		SELECT
			dt.minId
		FROM
			(
				SELECT
					MIN(id) AS minId
				FROM
					topic
				GROUP BY
					title
			) dt
	)
ORDER BY
	title

​如果觉得本文对你有帮助,不妨点赞收藏起来把,说不定下次要用就找不到了呢。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。