你真的会玩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 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

mysql 查看索引、添加索引、删除索引命令添加索引删除索引

· Table 表的名称。 · Non_unique 如果索引不能包括重复词,则为0。如果可以,则为1。 · Key_name 索引的名称。 · S...

861
来自专栏个人随笔

sql sever分组查询和连接查询

分组查询 select 查询信息 from 表名 where 条件 group by 按照列分组(可多个 ,隔开) order by 排序方式 (查询信息如果列...

3515
来自专栏java一日一条

理解MySQL——索引与优化

写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记 录,DBMS的页面大小为4K...

752
来自专栏Linyb极客之路

MySQL 索引管理与执行计划

  索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索...

1244
来自专栏技术碎碎念

mysql使用基础 sql语句与数据完整性(二)

二、DML:Data Manipulation Language 数据操作语言   作用:操作表中的数据的。   关键:INSERT UPDATE DELE...

35110
来自专栏性能与架构

Mysql 8 重要新特性 - CTE 通用表表达式

3416
来自专栏Python爬虫实战

MySQL 从零开始:06 数据检索

在第四节《表的增删改查》中已经介绍了 select 查询记录的几种使用方法:查询所有行的所有列、查询指定行的所有列、查询所有行的指定列和查询指定行的指定列。本文...

1163
来自专栏性能与架构

简化 SQL 递归查询

自引用类型的表结构处理起来比较麻烦,比如“分类”表,通常包括自己的ID和父分类ID,当我们要做父分类路径、子分类路径之类的查询时很不方便,例如我们会使用嵌套查询...

1524
来自专栏技术小站

(转)MySQL之char、varchar和text的设计

http://www.cnblogs.com/billyxp/p/3548540.html

1042
来自专栏IT开发技术与工作效率

MySQL 8 列出相关依赖 使用CTE(公共数据表达式)

2335

扫码关注云+社区

领取腾讯云代金券