首先新建表:
--創建示例表CREATE TABLE t( id INT IDENTITY(1,1) PRIMARY KEY, a VARCHAR(10), b VARCHAR(10))--插入數據INSERT INTO t SELECT 'aa','bb' UNION ALLSELECT 'a1','bgb' UNION ALLSELECT 'aa','bb' UNION ALLSELECT 'a2','bb' UNION ALLSELECT 'aa3','beeb' UNION ALLSELECT 'aa','bb' UNION ALLSELECT 'a2','bb'
查詢重復數據:可看到重復數據為:[a2,bb] 重復2次,[aa,bb] 重復3次
--查詢重復數據SELECT a,b,COUNT(*) count FROM t GROUP BY a,b
刪除重復數據 (重復數據只保留1條):
方法一
--首先通過子查詢取出 id 最小的不重復行,然后通過 NOT IN 刪除重復數據DELETE FROM t WHERE id NOT IN( SELECT MIN(id) FROM t GROUP BY a,b)
方法二
--首先通過 PARTITION BY 對 a,b 列進行分區排序并生成序號列,然后將序號大于 1 的行刪除,即刪除了重復數據DELETE a FROM (SELECT ROW_NUMBER() OVER (PARTITION BY a,b ORDER BY ID) num FROM t) a WHERE num>1
新聞熱點
疑難解答