美文网首页
MySQL删除数据表中的重复数据

MySQL删除数据表中的重复数据

作者: bearPotMan | 来源:发表于2019-03-01 11:08 被阅读0次

    我们直接从一个简单的案例来入手,直观地看一下实践结果,那就开路吧!

    1. 创建表以及添加基础数据

    为体验效果,添加基础数据的时候我们会有意添加两条重复的。

    /* 建表语句 */
    CREATE TABLE `user_test` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '删除重复数据测试表',
      `user_uuid` varchar(255) DEFAULT NULL COMMENT '用户编号',
      `user_name` varchar(255) DEFAULT NULL COMMENT '用户名',
      `password` varchar(255) DEFAULT NULL COMMENT '密码',
      `sex` int(255) DEFAULT NULL COMMENT '0:女;1:男',
      `create_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
      `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
    
    /* 新增测试数据 */
    insert into user_test (user_uuid, user_name, password, sex) values ('1234567890', 'bearPotMan', '123456', '1');
    insert into user_test (user_uuid, user_name, password, sex) values ('1234567890', 'bearPotMan', '123456', '1');
    insert into user_test (user_uuid, user_name, password, sex) values ('2345678901', 'bearPot', '123456', '0');
    insert into user_test (user_uuid, user_name, password, sex) values ('3456789012', 'bear', '123456', '1');
    insert into user_test (user_uuid, user_name, password, sex) values ('4567890123', 'potMan', '123456', '1');
    insert into user_test (user_uuid, user_name, password, sex) values ('2345678901', 'bearPot', '123456', '0');
    
    基础数据.png
    1. 按以下步骤执行sql语句
    • 查询重复数据以及重复的次数
    select *,count(id) duplicate_count from user_test
    group by user_uuid
    having count(id)>1
    order by id
    
    查询重复数据结果.png
    • 根据user_uuid分组,查询所有数据的id

    根据哪个字段分组依具体的业务而定,此处我们使用理论上唯一的user_uuid.

    select min(id) from user_test
    group by user_uuid
    
    查询最小id.png
    • 删除重复数据
    delete from user_test 
    where id not in 
    (select a.id from ((select min(id) id from user_test group by user_uuid) a))
    
    1. 查看最终结果
      去重最终结果.png
      结束语:通过本次实践,看到最终的结果,我们达到了目的。

    我是bearPotMan,一个经验不足的十八线演(码)员(农)。
    Know everything,control everything!

    相关文章

      网友评论

          本文标题:MySQL删除数据表中的重复数据

          本文链接:https://www.haomeiwen.com/subject/tuiruqtx.html