在日常开发过程中,可能会出现一些 bug,导致 Mysql 数据库数据重复,需要删除重复数据,这里记录下删除重复数据的通用 SQL ,方便以后需要时查阅
1、写法一
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、写法二
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_1 和 column_2 是用来分组确认重复数据的字段。
本文分享了两种处理Mysql数据库中因bug导致的数据重复问题的通用SQL删除重复数据的方法,包括使用INNERJOIN和EXISTS子句的写法,以及如何基于特定字段(column_1和column_2)进行分组和删除规则。
956

被折叠的 条评论
为什么被折叠?



