MySQL如何删除mysql数据表内的重复数据 |
删除数据表内重复数据的常规顺序是:创建备份、确定重复记录、编写删除语句 方法一: 借助 inner joinDELETE t1 FROM table t1 INNER JOIN table t2 WHERE t1.id < t2.id AND t1.column1 = t2.column1;
注:在执行操作之前,务必备份数据,以防万一 。 方法二: 借助 group byDELETE FROM your_table WHERE id NOT IN ( SELECT MAX(id) FROM your_table GROUP BY column1, column2, ... /* 列出用于判断重复的列 */ );
注:在执行操作之前,务必备份数据,以防万一 。 方法三:借助 临时表如果数据量很大,删除重复数据可以采用创建临时表的方式,效率更高 。 步骤: 1.创建一个新的临时表,并将去重后的数据插入到新表中 。 CREATE TABLE new_table AS SELECT * FROM old_table GROUP BY column_to_be_deduplicated; 在这里, 2.删除原来的表/修改原来的表名 DROP TABLE old_table; RENAME TABLE old_table TO old_table_bak; 将新的临时表重命名为原来的表名 。 RENAME TABLE new_table TO old_table; 这种方式是先将去重后的数据插入到一个新的临时表,然后删除旧的表/修改旧表的名字,最后将临时表重命名为旧表的名字,好处是在处理大量数据时,效率会更高 。 在第二步的时候不建议采用直接删除旧表的方式,凡是涉及到数据变动的,均需万分谨慎 。 总结以上为个人经验,希望能给大家一个参考,也希望大家多多支持 。 |