更新声明以增加列值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新声明以增加列值相关的知识,希望对你有一定的参考价值。

请考虑以下设置

Control Group   Sequence
Cont1   Group1  0
Cont2   Group1  1
Cont3   Group1  2
Cont3   Group2  0
Cont2   Group2  1
Cont1   Group2  2

对于序列>=cont2的序列和各组的序列,用+1进行递增。

结果应该是

Control Group   Sequence
Cont1   Group1  0
Cont2   Group1  2
Cont3   Group1  3
Cont3   Group2  0
Cont2   Group2  2
Cont1   Group2  3

有谁能帮我构造Sql来得到上述结果?

答案

我想这就是你想要的。

update setup
    set sequence = sequence + 1
    where sequence >= (select s2.sequence
                       from setup s2
                       where s2.group = s.group and s2.control = 'Cont2'
                      );
另一答案

你也可以用OUTER APPLY试试另一种解决方案。

UPDATE s
    SET s.[Sequence] = s.[Sequence]+1
FROM setup s
OUTER APPLY
(
    SELECT s2.[Sequence]
    FROM setup s2
    WHERE s2.[Group] = s.[Group] AND s2.[Control] = 'Cont2'
)_
WHERE s.[Sequence] >= _.[Sequence]

以上是关于更新声明以增加列值的主要内容,如果未能解决你的问题,请参考以下文章

仅当低于 100 时才增加列值

更新与其他列具有一个或多个相同值的列值

VSCode自定义代码片段——声明函数

VSCode自定义代码片段8——声明函数

在 Oracle 中更新列值的过程

循环遍历数据框以更改列值-python [重复]