所以我有以下情况要解决。
我有一个具有以下结构的表,我需要将Comment3列增加1,但不是整个记录,而是仅针对基于Tid列匹配的记录。
所以我的桌子看起来像这样
------------------------
ID | TID | COMMENT3
------------------------
101 | 715 | 1
102 | 715 | 2
103 | 715 | NULL
104 | 715 | NULL
因此,我需要Comment3列中的每个空值都根据作为参考列的TID用最后一个值加1进行更新。
谢谢。
答案 0 :(得分:0)
在适当的ROW_NUMBER()
子句中使用OVER
:
;WITH Comment3NewRanking AS
(
SELECT
T.ID,
T.TID,
T.Comment3,
Ranking = ROW_NUMBER() OVER (PARTITION BY T.TID ORDER BY T.ID ASC)
FROM
YourTable AS T
)
UPDATE C SET
Comment3 = C.Ranking
FROM
Comment3NewRanking AS C
WHERE
C.Comment3 IS NULL
该解决方案假定,只要为特定的TID
设置了ID,它们就以ID
的升序排列。还要假设您希望TID
的每一层都从1开始的值(如果没有,请提供另一个有代表性的示例)。