Mysql 删除 数据库重复数据 并保留 1 条记录

查询所有重复数据

SELECT * FROM table WHERE (col1,col2) IN
    (SELECT col1,col2 FROM table GROUP BY col1,col2 HAVING count(id) > 1);

由于Mysql 不能对进行查询操作的表进行 delete,update操作 因此加一个临时表

删除多余数据 保留ID 最小的一条

DELETE  FROM table WHERE (col1,col2) IN 
    ( SELECT * FROM (SELECT col1,col2 FROM table GROUP BY col1,col2 HAVING count(col1) > 1) b )  
and  id NOT IN       
    ( SELECT * FROM (SELECT min(id) FROM table GROUP BY col1,col2 HAVING count(col1) > 1 ) c );

猜你喜欢

转载自my.oschina.net/u/3939061/blog/2967053