MySQL数据库删除重复记录只保留其中一条 - 风屿岛
MySQL数据库删除重复记录只保留其中一条 - 风屿岛

MySQL数据库删除重复记录只保留其中一条

2020-01-16 超级管理员
AI摘要

文章介绍了如何使用SQL查询和删除数据库中重复的type数据,首先通过分组和筛选找出重复的type及其最小id,然后通过子查询确定需要删除的非最小id记录。由于MySQL不能直接删除查询结果,需借助临时表实现删除操作。最终通过删除非最小id的记录,保留每个type的最小id数据。

查出重复的type

SELECT type FROM table GROUP BY type HAVING count(type) > 1;

查出重复的type数据中最小的id

SELECT min(id) FROM table GROUP BY type HAVING count(type) > 1;

查出重复的type数据中非最小的id(需要删除的)

SELECT id FROM table WHERE type in(
    SELECT type FROM table GROUP BY type HAVING count(type) > 1)
    AND id  not IN(SELECT min(id) FROM table GROUP BY type HAVING count(type) > 1);

在Mysql中是不能删除查询出来的记录,而是要通过一张临时表来解决

SELECT id from (
    SELECT id FROM table WHERE type in(
        SELECT type FROM table GROUP BY type HAVING count(type) > 1)
        AND id  not IN(SELECT min(id) FROM table GROUP BY type HAVING count(type) > 1)
) as t;

删除type重复的数据(只保留一条,保留最小id的)

DELETE FROM table WHERE id IN (
    SELECT id from (
        SELECT id FROM table WHERE type in(
            SELECT type FROM table GROUP BY type HAVING count(type) > 1)
            AND id  not IN(SELECT min(id) FROM table GROUP BY type HAVING count(type) > 1)
    ) as t
);
返回首页
最后更新: 2025-12-23

评论

发表评论

设置

主题

字体连字

HDR