我的sql数据库中有一列名为S-No。 其价值如下:
S-No
____
1
____
2
____
Null
____
Null
____
3
____
Null
____
Null
____
Null
____
Null
____
Null
____
4
____
Null
.
.
现在,我想以这样的方式编写查询,其中S-No列包含1到2之间的Null,将值更新为1 .....并且其中Null在2到3之间,更新那里的值到2 ......依旧......等等。 3到4 - 更新为3,4到5 ---更新为4,5到6 ......我希望你会建议我查询..我无法写...皱眉| :(我希望你的家伙会帮忙。
答案 0 :(得分:0)
假设有一个ID或其他列将保留顺序,以便您知道null
之间的数字,您可以执行以下操作:
UPDATE t
SET [S-no] =
(
SELECT MAX(S_no) FROM table WHERE ID < t.ID
)
WHERE S_no IS null
显然,要么在QA环境中保留备份或测试 - 也不表示或暗示保证......
答案 1 :(得分:0)
WITH B AS ( SELECT ID,(SELECT max(s2) 从table2 WHERE ID&lt; A.ID和table2.s2 IS NOT NULL)ValueToAssign 来自table2 A. 在哪里s2是NULL )
UPDATE table2 SET s2 = B.ValueToAssign FROM table2 JOIN B ON table2.ID = B.ID