Sql server 如何在UPDATE子句中使用行号()?
ROW_NUMBER仅用于MS SQL Server中的SELECT子句,但我想将其用于更新,如下所示:Sql server 如何在UPDATE子句中使用行号()?,sql-server,tsql,sql-server-2008-r2,window-functions,Sql Server,Tsql,Sql Server 2008 R2,Window Functions,ROW_NUMBER仅用于MS SQL Server中的SELECT子句,但我想将其用于更新,如下所示: Update MyTab Set MyNo = 123 + ROW_NUMBER() over (Order By ID) Where a=b; 然后我得到了这样的错误 窗口函数只能出现在SELECT或ORDER BY子句中 如何使用UPDATE子句中的行数?您可以使用CTE: ;WITH RowNbrs AS ( SELECT ID , ROW_NUM
Update MyTab Set MyNo = 123 + ROW_NUMBER() over (Order By ID)
Where a=b;
然后我得到了这样的错误
窗口函数只能出现在SELECT或ORDER BY子句中
如何使用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;
我会用CTE
WITH myUpdate ( myRowNumber )
AS
(
SELECT ROW_NUMBER() over (order by ID) As myRowNumber
FROM MyTab
WHERE a = b
)
update MyTab
set MyNo = 123 + myRowNumber
FROM myUpdate
不过,您可以先通过执行
select * from myUpdate
结果:
ID MyNum ColA ColB
----------- ----------- ----------- -----------
2 1 11 11
4 2 22 22
6 NULL NULL NULL
8 NULL 33 NULL
10 NULL NULL 44
12 NULL 55 66
在我的案例中,需要Dup of Join来完成我的查询,其中myUpdate id为myRowNumber,SELECT id为myRowNumber,order by id上的ROW_NUMBER为AspNetUsers的myRowNumber,其中UserType='Customer'update AspNetUsers set EmployeeCode=FORMATmyRowNumber,'00000'来自myUpdate left在u.id=myUpdate.ids加入AspNetUsers u节省了我的一天!谢谢
ID MyNum ColA ColB
----------- ----------- ----------- -----------
2 1 11 11
4 2 22 22
6 NULL NULL NULL
8 NULL 33 NULL
10 NULL NULL 44
12 NULL 55 66