MySQL中高效删除重复数据的实用方法详解
在MySQL中,可以通过使用DELETE结合JOINROW_NUMBER()窗口函数来删除重复项,具体方法取决于数据结构和需求,以下是几种常见场景的解决方案:

  1. 使用DELETEJOIN删除重复行
    适用于保留最小或最大ID的重复记录,删除table_name表中column_name字段重复的数据,仅保留ID最小的记录:

    mysql 如何删除重复项,高效删除MySQL重复项

    DELETE t1 FROM table_name t1
    JOIN table_name t2 
    WHERE t1.id > t2.id AND t1.column_name = t2.column_name;
  2. 利用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
    );
  3. 创建临时表去重
    若数据量较大,可先复制去重数据到新表,再替换原表:

    CREATE TABLE new_table AS 
    SELECT DISTINCT * FROM old_table;
    DROP TABLE old_table;
    RENAME TABLE new_table TO old_table;

注意事项

  • 操作前务必备份数据,避免误删。
  • 对于无唯一标识列的表,可添加临时自增ID辅助处理。
  • 使用GROUP BYMIN()/MAX()函数也能实现类似效果,但需根据业务逻辑调整。

通过以上方法,可高效清理MySQL中的重复数据,提升数据库性能与一致性。

未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网

原文地址:https://www.html4.cn/15327.html发布于:2026-09-07