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

     检查下现在的记录:

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

  • 相关阅读:
    [译]ABP vNext微服务演示,项目状态和路线图
    [译]初试C# 8.0
    [译]ABP vNext介绍
    ViewModel从未如此清爽
    python 函数基础及装饰器
    python 基础一
    scrapy基础二
    scrapy 基础
    python 基础技巧
    pandas 基础
  • 原文地址:https://www.cnblogs.com/wei-jing/p/10140634.html
Copyright © 2011-2022 走看看