ROW_NUMBER()
仅适用于SELECT
MS SQL Server
中的条款,但我想用它进行更新,如下所示:
Update MyTab Set MyNo = 123 + ROW_NUMBER() over (Order By ID)
Where a=b;
然后我得到了类似的错误,
Windowed functions can only appear in the SELECT or ORDER BY clauses.
如何使用ROW_NUMBER()
在UPDATE
条款?
最佳答案
您可以使用 CTE:
;WITH RowNbrs AS (
SELECT ID
, ROW_NUMBER() OVER (ORDER BY ID) AS RowNbr
FROM MyTab
WHERE a = b
)
UPDATE t
SET t.MyNo = 123 + r.RowNbr
FROM MyTab t
JOIN RowNbrs r ON t.ID = r.ID;
关于sql-server - 如何在 UPDATE 子句中使用 ROW_NUMBER()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19124662/