zoukankan      html  css  js  c++  java
  • Mysql数据库删除重复数据

    最近因为发现数据库中的表有脏数据,需要维护。这些脏数据就是重复数据,需要将其删除。

    现假设有一张test表,主键字段为num,还有id,one,two三个字段。假设id规定只能有一条记录(即需要为id建立联合唯一索引)。表中数据如下:

    可以看出:表中数据明显有不满足条件的重复数据。

    解决方法:使用一个中间临时表过渡~~

    先查看需要保留的记录的id

    先查看重复记录的最小id

    SELECT id from test where id in (SELECT MIN(id) from test GROUP BY id having count(id )>1)

    再查看没有重复的记录id

    SELECT id from test GROUP BY id having count(id)=1

    首先,建立一个临时表如下:

    Sql代码 
    1. CREATE TABLE tmp AS select id from test where id not in (SELECT id from test where id in (SELECT MIN(id) from test GROUP BY id having count(id )>1) or id in(SELECT MIN(id) from test GROUP BY id having count(id)=1))

     这张临时表记录了重复记录里所有需要删除的id。

    接下来,删除不在里面的记录即可:

    Sql代码  收藏代码
    1. DELETE FROM test WHERE id NOT IN(SELECT * FROM tmp

     检查下现在的记录:

     发现,记录终于“干净”了。。重复性的记录被成功删除了!

  • 相关阅读:
    CentOS中rpm和yum到底有什么区别?
    Anaconda是个什么东东?
    Hadoop入门学习整理(三)
    Hadoop入门学习整理(二)
    CentOS6.10下安装MongoDB和Redis
    Linux 系统中环境变量/etc/profile、/etc/bashrc、~/.bashrc的区别
    一些想法
    时间
    周末
    条件
  • 原文地址:https://www.cnblogs.com/wei-jing/p/10140634.html
Copyright © 2011-2022 走看看