mysql删除重复数据只保留一条,代码如下:
DELETE FROM `article` WHERE `article_id` IN ( SELECT `c`.`id` FROM ( SELECT MIN(`article_id`) AS `id` FROM `article` AS `a` WHERE a.article_id IN ( SELECT `article_id` FROM `article` AS `b` GROUP BY `title` HAVING COUNT(*) > 1 ) GROUP BY `title` ) `c` );
GROUP BY 可以多个字段,用英文逗号分开,如:GROUP BY `title`,`user_id`。
MIN(`article_id`) 为保留最大(最新)的记录,MAX(`article_id`) 为保留最小(最早)的记录。
这个sql执行一次只删除一个重复数据,如同一条数据重复了三次(相同title的),需执行两次才可以删除完成。如下要执行三次:
id title 1 aaa 2 aaa 3 aaa 4 bbb 5 bbb 6 ccc 7 ccc 8 ddd 9 ddd