专栏首页james大数据架构你真的会玩SQL吗?删除重复数据且只保留一条

你真的会玩SQL吗?删除重复数据且只保留一条

在网上看过一些解决方法

我在此给出的方法适用于无唯一ID的情形

表:TB_MACVideoAndPicture 字段只有2个:mac,content

mac作为ID,正常情况下mac数据是唯一的,由于操作失误导致数据插入多次,导致出现多个mac,content重复数据,现在只保留一条,删除多余的

大体思想是给重复数据一个自增ID,过滤出每组里面最小ID,删除原数据中所有重复数据再将最小ID插入

 --查询出所有重复数据,并给定递增id
 SELECT IDENTITY( INT,1,1 ) AS id ,
        mac ,
        content 
 INTO   #tmp
 FROM   TB_MACVideoAndPicture
 WHERE  mac IN ( SELECT    mac
                  FROM      TB_MACVideoAndPicture
                  GROUP BY  mac ,content
                  HAVING    COUNT(*) > 1 )
 ORDER BY mac ,content
 
 
 --删除原表中所有重复数据
 DELETE FROM TB_MACVideoAndPicture
 WHERE  mac IN ( SELECT  mac FROM  #tmp )
 
 --插入id最小的重复数据到原表
 INSERT INTO TB_MACVideoAndPicture
        SELECT  UPPER(mac) mac ,
                content 
        FROM    #tmp a
        WHERE   id IN ( SELECT  MIN(id)
                        FROM    #tmp b
                        WHERE   a.mac = b.mac AND a.content = b.content
                        GROUP BY mac ,content )
 

 DROP TABLE #tmp

此处用到了临时表

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 封装多线程处理大量数据操作

    地球人都知道Thread和ThreadPool接受的委托都是没有返回值的。要想取的返回值,我们就得自己动手了,我们需要构造一个AsyncContext类,由这个...

    欢醉
  • SpringBoot实用小技巧之动态设置SpringBoot日志级别

      有时线上问题我们用打日志的方式来观察错误或埋点参数,但由于这些日志如果都打出来会占用大量存储空间而且覆盖了一些有效信息,所以线上级别一般设置INFO,调试级...

    欢醉
  • 表格可在线编辑效果

    可在线编辑的表格,包括动态添加单元格、修改单元格内容 <html> <head> <meta http-equiv="content-Type" content...

    欢醉
  • 无线安全专题_攻击篇--MAC泛洪攻击

    七夜安全博客
  • python语言实现mac地址自加

       以配置文件中的mac地址为起始地址(形式为xx:xx:xx:xx:xx:xx),并根据步长设置实现mac自加,然后以该mac为源mac模拟报文。

    py3study
  • k8s集群网络(11)-flannel vxlan overlay网络通讯

    在上一篇文章里我们介绍了k8s集群中flannel vxlan overlay网络的创建,这在里我们基于上一篇文章中的例子,来介绍在flannel vxlan ...

    TA码字
  • [javaSE] 单例设计模式

    陶士涵
  • 地图3.0时代:百度乘风而上,腾讯、阿里跟进

    最近,高德一封公开的“内部信”让整个互联网圈都将目光聚焦在了地图身上。在“内部信”中老俞高调宣扬同比增长120%的用户数据及十一当天过亿的导航规划服务次数等数据...

    罗超频道
  • C#实现局域网内远程开机

    1、远程开机原理      远程开机Wake on LAN(WOL),俗称远程唤醒,远程唤醒的实现主要是向目标主机发送特殊格式的数据包,是AMD公司制作的Mag...

    waylon
  • InnoDB: ./ib_logfile0 can't be opened in read-write mode

    title: "Mysql Failed to Start on Mac Due to Innnodb Libdata1 Can Not Be Opened i...

    扫地工程师

扫码关注云+社区

领取腾讯云代金券