SQL表中列的增量值

时间:2019-02-15 07:42:20

标签: sql sql-server

所以我有以下情况要解决。
我有一个具有以下结构的表,我需要将Comment3列增加1,但不是整个记录,而是仅针对基于Tid列匹配的记录。

所以我的桌子看起来像这样

------------------------
ID  |  TID  |  COMMENT3   
------------------------
101 |  715  |  1
102 |  715  |  2
103 |  715  |  NULL
104 |  715  |  NULL

因此,我需要Comment3列中的每个空值都根据作为参考列的TID用最后一个值加1进行更新。

谢谢。

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开始的值(如果没有,请提供另一个有代表性的示例)。