在網上看過一些解決方法
我在此給出的方法適用於無唯一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
此處用到了臨時表
