更新声明以增加列值
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]
以上是关于更新声明以增加列值的主要内容,如果未能解决你的问题,请参考以下文章