SQL去除重复删除重复数据(高效,大数据)

编程开发 / / at

MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考。

第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表

create table tmp3 as select min(id) as col1 from data_content_152 group by SFZHM;

第二步:创建新表RES

CREATE TABLE `res` (

`id` int(11),
`sfz` char(20)
) ENGINE=MyISAM;
第三步:把TMP3表ID对应到data_content_152里需要提取的数据添加到RES表的SFZ字段
INSERT INTO res (sfz) SELECT sfzhm FROM data_content_152,tmp3 where data_content_152.id=tmp3.col1
至此,就在MYSQL里实现了,给数据表data_content_152完全删除重复数据,把去重复后的数据导入到RES表。

8条回应:“SQL去除重复删除重复数据(高效,大数据)”

  1. 不错,但是如果涉及到记录ID呢咋整

  2. 青海黑枸杞说道:

    青海黑枸杞http://www.heigouqi.cn 博主,你好,能友情链接吗 QQ171565-8817

  3. 朱鹏飞说道:

    按照上面说的方法做了一遍测试,发现最后step3有问题,duplicated row还是被插入到res中,where 条件data_content_152.id=tmp3.col1从data_content_152中将第一步过滤出去的id还原出来了
    mysql> select * from ceshi123;
    +——+——+
    | id | name |
    +——+——+
    | 1 | a |
    | 1 | a |
    | 2 | b |
    | 2 | b |
    | 2 | b |
    | 3 | c |
    | 4 | d |
    | 4 | d |
    +——+——+
    8 rows in set (0.00 sec)

    mysql> create table tmp3 as select min(id) as col1 from ceshi123 group by name;
    Query OK, 4 rows affected (0.14 sec)
    Records: 4 Duplicates: 0 Warnings: 0

    mysql> select * from tmp3;
    +——+
    | col1 |
    +——+
    | 1 |
    | 2 |
    | 3 |
    | 4 |
    +——+
    4 rows in set (0.00 sec)

    mysql> create table ceshit(id int,name varchar(50));
    Query OK, 0 rows affected (0.08 sec)

    mysql> insert into ceshit(name) select name from ceshi123,tmp3 where ceshi123.id=tmp3.col1;
    Query OK, 8 rows affected (0.01 sec)
    Records: 8 Duplicates: 0 Warnings: 0

    mysql> select * from ceshit;
    +——+——+
    | id | name |
    +——+——+
    | NULL | a |
    | NULL | a |
    | NULL | b |
    | NULL | b |
    | NULL | b |
    | NULL | c |
    | NULL | d |
    | NULL | d |
    +——+——+
    8 rows in set (0.00 sec)

    • GlobeTour说道:

      你的问题在这里,ID应该是不重复的,你的ID是重复的
      +——+——+
      | id | name |
      +——+——+
      | 1 | a |
      | 1 | a |
      | 2 | b |
      | 2 | b |
      | 2 | b |
      | 3 | c |
      | 4 | d |
      | 4 | d |

  4. 161668说道:

    不错 哦,正需要这个。

  5. 济世堂说道:

    很好,还有光临济世堂网站(http://www.jst114.net)

  6. 河北sem馅饼说道:

    写的很好 ,技术哈哈

  7. 猫猫说道:

    你不是航海学院的吧?很好奇,看你好像学的好像不是编程什么的呀。。来你博客找zc的知识

发表评论

电子邮件地址不会被公开。 必填项已用*标注