MySQL中高效删除重复数据的实用方法详解
在MySQL中,可以通过使用DELETE结合JOIN或ROW_NUMBER()窗口函数来删除重复项,具体方法取决于数据结构和需求,以下是几种常见场景的解决方案:
-
使用
DELETE与JOIN删除重复行
适用于保留最小或最大ID的重复记录,删除table_name表中column_name字段重复的数据,仅保留ID最小的记录:
DELETE t1 FROM table_name t1 JOIN table_name t2 WHERE t1.id > t2.id AND t1.column_name = t2.column_name;
-
利用
ROW_NUMBER()窗口函数(MySQL 8.0+)
更灵活的方法是为重复数据分组编号,然后删除编号大于1的行:DELETE FROM table_name WHERE id IN ( SELECT id FROM ( SELECT id, ROW_NUMBER() OVER (PARTITION BY column_name ORDER BY id) AS row_num FROM table_name ) t WHERE row_num > 1 ); -
创建临时表去重
若数据量较大,可先复制去重数据到新表,再替换原表:CREATE TABLE new_table AS SELECT DISTINCT * FROM old_table; DROP TABLE old_table; RENAME TABLE new_table TO old_table;
注意事项:
- 操作前务必备份数据,避免误删。
- 对于无唯一标识列的表,可添加临时自增ID辅助处理。
- 使用
GROUP BY和MIN()/MAX()函数也能实现类似效果,但需根据业务逻辑调整。
通过以上方法,可高效清理MySQL中的重复数据,提升数据库性能与一致性。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/15327.html发布于:2026-09-07





