美文网首页mysql 知识库
记一次MySql去重的经历

记一次MySql去重的经历

作者: 始终我是我 | 来源:发表于2018-07-26 17:36 被阅读141次

整个表target_table大概有14000W条记录,有个主键id,需要去重的字段是mac.

  1. 查看重复的记录数

    SELECT
     min( id ) AS mid,
     mac,
     count ( * ) 
    FROM
     target_table 
    GROUP BY
     mac 
    HAVING
     count( mac ) > 1;
    

    整个表重复的数据2w+

  2. 创建临时表

    CREATE TABLE dup_tmp (
    SELECT
     min( id ) AS mid,
     mac,
     count ( * ) 
    FROM
     target_table 
    GROUP BY
     mac 
    HAVING
     count( mac ) > 1 
     );
    

    将重复的mac筛选到临时表

  3. 删除多余的数据保留最小的id记录

    DELETE target 
    FROM
     target_table AS target
     JOIN dup_tmp AS tmp ON target.mac = tmp.mac 
    WHERE
     target.id > tmp.mid;
    

    刚开始的时候mac字段没有建索引,删除很慢。建了索引删除就很快了。

相关文章

  • 记一次MySql去重的经历

    整个表target_table大概有14000W条记录,有个主键id,需要去重的字段是mac. 查看重复的记录数S...

  • 记一次MySQL假死经历

    最近在测试环境联调,发现个好玩的,记录一下:起因:调用接口,返回状态码 504。经过:一系列面向Google解决B...

  • mysql | 去重查询

    今天在实际开发过程中遇到一个数据库去重查询的问题,在这里给大家分享一下。 类似于上面这张数据表,我们发现id=5和...

  • mysql 数据去重

    从excel中导入了一部分数据到mysql中,有很多数据是重复的,而且没有主键,需要按照其中已经存在某一列对数据进...

  • mysql distinct去重

    在使用distinct时发现,select distinct name from t1;会去掉重复的id记录。但是...

  • mysql查询去重

    mysql两个字段关联查询去重 //查询重复SELECT * from (SELECT *, CONCAT(a,b...

  • MySQL去重distinct

    在MySQL中需要查询表中不重复的记录时,可以使用distinct关键字过滤重复记录。 语法: select di...

  • MySQL去重示例

    当name,address有很多重复值时,要求仅保留其中一条记录 假如没有id列,则需要先手动先加上:

  • 记一次 Google 面试经历

    记一次 Google 面试经历 记一次 Google 面试经历

  • 记一次去医院的经历

    今天读完了《曾国藩家书》,有点开心,这本书读了很久终于读完了,打算后面买本实体书再细读一遍,做些笔记,有些道理很值...

网友评论

    本文标题:记一次MySql去重的经历

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