有沒有一種可能的方法可以從這樣的表中洗掉重復的行而不洗掉表并使用不同的行重新創建它?
DROP TABLE IF EXISTS #temp;
CREATE TABLE #temp (id INT);
INSERT INTO #temp
VALUES (1), (2), (2), (2), (3), (3);
uj5u.com熱心網友回復:
使用按您正在查看的指定列分組的 CTE 和 ROW_NUMBER 可以干凈地洗掉重復值,因為 ROW_NUMBER 使用 PARTITION BY 聚合的重復值遞增計數。當訂購時發現新的分組時,它會將 ROW_NUMBER 重置為 1,從不同分組值的下一條記錄開始。
WITH CTE AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col1) AS RN
FROM #temp
)
DELETE FROM CTE WHERE RN<>1
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/466127.html
上一篇:使用同一個表和多個變數以及WHEREIN子句合并SQLUPDATE陳述句
下一篇:使用SQL函式更新表
