首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> SQL Server 2005

SQL Server 2005 利用 ROW_NUMBER() 單一查詢刪除重複資料

     編輯:SQL Server 2005

建立測試資料

CREATE TABLE #Temp (Id INT, Name VARCHAR(50), Age INT, Sex BIT DEFAULT 1);
INSERT #Temp VALUES
(1,'James',25,1),(1,'James',25,1),(1,'James',25,1),
(2,'Lisa',24,0),(2,'Lisa',24,0),(2,'Lisa',24,0),
(3,'Mirsa',23,0),(3,'Mirsa',23,0),(3,'Mirsa',23,0),
(4,'John',26,1),(5,'Abraham',28,1),(6,'Lincoln',30,1);

刪除重複語句 (保留每組第一筆)

DELETE t
FROM (
    SELECT ROW_NUMBER() OVER (PARTITION BY Id, Name, Age, Sex ORDER BY Id) AS rn, *
    FROM #Temp
) t
WHERE t.rn > 1;

驗證結果

SELECT * FROM #Temp;
-- 僅保留 6 筆唯一資料

關鍵點

  • PARTITION BY 列出判斷重複的所有欄位。
  • ORDER BY 決定保留哪一筆 (此處按 Id 保留第一筆)。
  • 衍生表別名 t 直接作為 DELETE 目標,無需臨時表/游標。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved