加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:05:42 所属栏目:MsSql教程 来源:网络整理
导读:参见英文答案 SQL Update with row_number() ROW_NUMBER()仅用于MS SQL Server中的SELECT子句,但是我想将其用于如下更新: Update MyTab Set MyNo = 123 + ROW_NUMBER() over (Order By ID)Where a=b; 那我就得错了, Windowed functions can only appear in
参见英文答案 > SQL Update with row_number()
ROW_NUMBER()仅用于MS SQL Server中的SELECT子句,但是我想将其用于如下更新:
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.

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

解决方法

DECLARE @MyTable TABLE
(
    ID INT IDENTITY(2,2) PRIMARY KEY,MyNum INT,ColA INT,ColB INT
);

INSERT  @MyTable (ColA,ColB)
SELECT 11,11 UNION ALL
SELECT 22,22 UNION ALL
SELECT NULL,NULL UNION ALL
SELECT 33,NULL UNION ALL
SELECT NULL,44 UNION ALL
SELECT 55,66;

UPDATE  UpdateTarget
SET     MyNum = RowNum
FROM
(
    SELECT  x.MyNum,ROW_NUMBER() OVER(ORDER BY x.ID) AS RowNum
    FROM    @MyTable x
    WHERE   x.ColA = x.ColB
) AS UpdateTarget;

SELECT * FROM @MyTable;

结果:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读