雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

MYSQL 如何删除表中重复数据

2024-10-05 36

MYSQL 如何删除表中重复数据

CREATE TABLE `test` (  `id` int(11) DEFAULT NULL,  `name` varchar(255) DEFAULT NULL,  `dept` varchar(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ------------------------------ Records of test-- ----------------------------INSERT INTO `test` VALUES ('1', 'zzz', '测试1');INSERT INTO `test` VALUES ('2', 'www', '测试1');INSERT INTO `test` VALUES ('3', 'fff', '测试1');INSERT INTO `test` VALUES ('4', 'zzz', '测试1');INSERT INTO `test` VALUES ('5', 'www', '测试1');INSERT INTO `test` VALUES ('6', 'fff', '测试1');INSERT INTO `test` VALUES ('7', 'test', '测试1');INSERT INTO `test` VALUES ('8', 'test', '测试1');INSERT INTO `test` VALUES ('9', 'test1', '测试1');

  可以看到上述表中id为4,5,6,8 是完全重复的数据,我们需要删除这些数据,我的逻辑是什么呢,就是每条数据分组后 取 id 最小的 那个 留下来,其余的进行删除

SQL如下:

DELETEFROM    testWHERE    id NOT IN (        SELECT            t.id        FROM            (                SELECT                    min(id) id                FROM                    test                GROUP BY                    NAME                HAVING                    count(1) > 0                ORDER BY                    id            ) t    )

 

更新于:1个月前
赞一波!

文章评论

评论问答