Mysql删除重复数据通用SQL

在日常开发过程中,可能会出现一些 bug,导致 Mysql 数据库数据重复,需要删除重复数据,这里记录下删除重复数据的通用 SQL ,方便以后需要时查阅

1、写法一

sql 复制代码
DELETE t1
FROM
	tbl_name t1
INNER JOIN tbl_name t2
WHERE
	t1.id < t2.id
AND t1.column_1 = t2.column_1
AND t1.column_2 = t2.column_2;

2、写法二

sql 复制代码
DELETE
FROM
	tbl_name
WHERE
	EXISTS (
		SELECT
			*
		FROM
			(
				SELECT
					max(id) AS id,
					column_1,
					column_2
				FROM
					tbl_name
				GROUP BY
					column_1,
					column_2
				HAVING
					count(1) > 1
			) t
		WHERE
			tbl_name.column_1 = t.column_1
		AND tbl_name.column_2 = t.column_2
		AND tbl_name.id < t.id
	)

重复数据中,保留 id 最大的,其余都删除,SQL 中 tbl_name 表示需要删除重复数据的表名,column_1column_2 是用来分组确认重复数据的字段。

相关推荐
南方以南_7 分钟前
【云实验】Excel文件转存到RDS数据库
数据库·excel
万山y1 小时前
es快速上手(从MySQL角度)
mysql·elasticsearch·jenkins
Listennnn2 小时前
Neo4j数据库
数据库·人工智能·neo4j
Liu1bo2 小时前
【MySQL】库与表的操作
数据库·mysql·oracle
冬瓜的编程笔记2 小时前
【MySQL成神之路】MySQL常用语法总结
数据库·mysql
YJQ99673 小时前
Redis配置与优化:提升NoSQL数据库性能的关键策略
数据库·redis·nosql
@Turbo@3 小时前
【QT】一个界面中嵌入其它界面(二)
开发语言·数据库·qt
小白的码BUG之路4 小时前
Elasticsearch-kibana索引操作
大数据·数据库·elasticsearch
遇见火星4 小时前
Ansible模块——文件内容修改
数据库·mysql·ansible
八股文领域大手子4 小时前
MySQL死锁:面试通关“三部曲”心法
数据库·mysql·面试