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

相关推荐
大妮哟14 分钟前
postgresql数据库日志量异常原因排查
数据库·postgresql·oracle
还是做不到嘛\.1 小时前
Dvwa靶场-SQL Injection (Blind)-基于sqlmap
数据库·sql·web安全
不写八个1 小时前
PHP教程004:php链接mysql数据库
数据库·mysql·php
Dylan~~~2 小时前
深度解析Cassandra:分布式数据库的王者之路
数据库·分布式
计算机学姐2 小时前
基于SpringBoot的咖啡店管理系统【个性化推荐+数据可视化统计+配送信息】
java·vue.js·spring boot·后端·mysql·信息可视化·tomcat
荒川之神2 小时前
Oracle HR 模式递归函数练习(基于 employees 表)
数据库·oracle
小陈工3 小时前
2026年3月31日技术资讯洞察:AI智能体安全、异步编程突破与Python运行时演进
开发语言·jvm·数据库·人工智能·python·安全·oracle
杨云龙UP3 小时前
Linux生产环境下Oracle RMAN 备份、核查、清理与验证常用命令整理_20260330
linux·运维·服务器·数据库·oracle
橙子家3 小时前
关于列式存储(Column-base Storage)的几个要点解读
数据库
٩( 'ω' )و2604 小时前
MySQL基础
数据库·mysql