在日常开发过程中,可能会出现一些 bug,导致 Mysql 数据库数据重复,需要删除重复数据,这里记录下删除重复数据的通用 SQL ,方便以后需要时查阅
1、写法一
DELETE t1
FROMtbl_name t1
INNER JOIN tbl_name t2
WHEREt1.id < t2.id
AND t1.column_1 = t2.column_1
AND t1.column_2 = t2.column_2;
2、写法二
DELETE
FROMtbl_name
WHEREEXISTS (SELECT*FROM(SELECTmax(id) AS id,column_1,column_2FROMtbl_nameGROUP BYcolumn_1,column_2HAVINGcount(1) > 1) tWHEREtbl_name.column_1 = t.column_1AND tbl_name.column_2 = t.column_2AND tbl_name.id < t.id)
重复数据中,保留 id 最大的,其余都删除,SQL 中 tbl_name 表示需要删除重复数据的表名,column_1 和 column_2 是用来分组确认重复数据的字段。