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 是用来分组确认重复数据的字段。

相关推荐
浪客灿心17 分钟前
项目篇:模块设计与实现
数据库·c++
流星白龙2 小时前
【MySQL高阶】26.事务(1)
数据库·mysql
三十..2 小时前
Redis 核心原理与高可用架构实践
运维·数据库·redis
这个DBA有点耶3 小时前
索引优化深潜(下):索引合并、ICP 与索引设计的实战法则
数据库·mysql·架构
用户3074596982073 小时前
EXPLAIN 执行计划 完全精通指南
mysql
努力努力再努力wz3 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
Theo·Chan3 小时前
机房断电搞崩服务器 | 人大金仓 V8 全量备份跨实例完整恢复实录
sql·信创·kingbase·金仓
JdSnE27zv3 小时前
Qt 操作SQLite数据库
数据库·qt·sqlite
tedcloud1233 小时前
HyperFrames部署教程:用HTML生成MP4视频
前端·数据库·人工智能·html·音视频
布朗克1683 小时前
25 IO流高级操作——序列化、NIO与Files工具类
java·数据库·io·nio