資料表 table1 某欄位組合重複,需刪除重複只保留第一筆(依身分識別欄 ID 排序)。
SELECT *, IDENTITY(int,1,1) AS ID INTO #t1 FROM table1;
DELETE a
FROM #t1 a
WHERE ID > (
SELECT MIN(ID) FROM #t1
WHERE field1 = a.field1
AND field2 = a.field2
-- ... fieldn = a.fieldn
);
TRUNCATE TABLE table1;
ALTER TABLE #t1 DROP COLUMN ID;
INSERT INTO table1 SELECT * FROM #t1;
SELECT DISTINCT * INTO #t1 FROM table1; TRUNCATE TABLE table1; INSERT INTO table1 SELECT * FROM #t1;
TRUNCATE 不可回滾。補充:SQL Server 2005+ 可用 ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ID) 寫法更簡潔高效。