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

简介: 在网上看过一些解决方法 我在此给出的方法适用于无唯一ID的情形 表:TB_MACVideoAndPicture 字段只有2个:mac,content mac作为ID,正常情况下mac数据是唯一的,由于操作失误导致数据插入多次,导致出现多个mac,content重复数据,现在只保留一条,删除多余...

在网上看过一些解决方法

我在此给出的方法适用于无唯一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

此处用到了临时表

 

目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
MySQL怎样删除重复数据,只保留一条?
MySQL怎样删除重复数据,只保留一条?
|
1月前
|
SQL 数据库 索引
解决SQL报错:索引中丢失IN或OUT參数
解决SQL报错:索引中丢失IN或OUT參数
|
7月前
|
SQL
删除SQL表数据时存在约束的解决方法
删除SQL表数据时存在约束的解决方法
138 0
|
8月前
sql_插入,修改,删除
sql_插入,修改,删除
40 0
|
9月前
|
SQL 存储 搜索推荐
SQL索引的创建与删除
索引就好像我们书中的目录,是这一本书的综合,告诉你在书的什么地方能够找到一个特定的向,一看目录就可以看到你要找的东西在哪一页,不用从书的起始页开始,缩减了你的查询时间。
|
SQL 关系型数据库 MySQL
MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据
MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据
259 0
MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据
|
SQL 数据库
SQL中删除重复数据问题
SQL中删除重复数据问题
SQL中删除重复数据问题
|
SQL 数据库
案例分享 | SQL Server删除重复数据只保留一行
最近项目组的同事遇到个问题,SQL Server的数据库中有张表格,由于之前没有设计关键字段的唯一约束,导致有时候执行插入操作时不小心执行了多次就出现了重复记录,后面重新加入唯一约束,由于已经有了重复记录,无法添加,需要先删除重复记录。但是要保留一行,于是协助他们尝试解决一下。原始数据就不贴出来了,这里用一些测试数据,方法一致,分享给小伙伴们~
案例分享 | SQL Server删除重复数据只保留一行
|
SQL 关系型数据库
SQL更新部分字段或者插入新数据
SQL更新部分字段或者插入新数据http://www.bieryun.com/3184.html 因为业务的原因,一张表的数据需要整合两张外键关联不强的表数据,这里涉及到更新部分字段或者插入新数据。
1548 0
|
SQL
SQL|表中添加、删除或修改列。
ALTER TABLE 语句用于在已有的表中添加、删除或修改列。 ALTER TABLE 语法 如需在表中添加列,请使用下面的语法: ALTER TABLE table_name ADD column_name datatype 如需删除表中的列,...
946 0