更新为null的列值

时间:2015-02-19 13:57:50

标签: sql

我的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 ......我希望你会建议我查询..我无法写...皱眉| :(我希望你的家伙会帮忙。

2 个答案:

答案 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