在网上看过一些解决方法
我在此给出的方法适用于无唯一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
此处用到了临时表