sql-server - 如何在 UPDATE 子句中使用 ROW_NUMBER()?

标签 sql-server tsql sql-server-2008-r2 window-functions

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/

相关文章:

sql - 删除不不同的行

c# - 如何在 MS Visual Studio 2013 中创建数据库?

sql - 合并SQL查询结果

sql - Adventure Work 数据库中复合主键的概念

sql-server - 使用 SQL Server 2008 R2 从日期时间获取日期名称

sql - 忽略存在于两个表 sql server 中的记录

java - Anylogic microsoft sql错误索引1超出范围

sql-server - SQL Server 2008 中的 LPAD

sql-server - 添加新列并设置外键关系

sql-server - 为什么 SQL Server @@SERVERNAME 返回我的旧计算机名称?