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

     检查下现在的记录:

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

  • 相关阅读:
    Trapping Rain Water
    Construct Binary Tree from Preorder and Inorder Traversal
    Flatten Binary Tree to Linked List
    Permutations II
    Unique Paths II
    Path Sum II
    Unique Binary Search Trees II
    evdev module-----uinput.py
    evdev module-----events.py
    evdev module-----device.py
  • 原文地址:https://www.cnblogs.com/wei-jing/p/10140634.html
Copyright © 2011-2022 走看看