在日常开发过程中,可能会出现一些 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 是用来分组确认重复数据的字段。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154464.html