MSSQL更新并设置具有特定值的列

时间:2014-12-18 19:11:25

标签: sql-server set conditional

我在更新MSSQL中的列时遇到问题, 所以基本上我有一个像这样的数据库

no     U1     U2     U3     U4
1      12     -1     10     -1
2      12     15     -1     11
3      -1     17     10     11
4      12     -1     10     11

我的目标是更新具有-1值的列。 1,它在U2和U4上有两个-1值, 我想要的是更新第一个-1值(在该示例中是从1开始的U2),具有我想要/我声明的值,我只想从1更新,而不是更新没有4 U2 ..

如何做到这一点?

1 个答案:

答案 0 :(得分:2)

使用UPDATE语句的where子句,例如:

update table1
set U1 = case U1 when -1 then 123 else U1 end,
    U2 = case when U1 != -1 and U2 = -1 then 123 else U2 end,
    U3 = case when -1 not in (U1, U2) and U3 = -1 then 123 else U3 end,
    U4 = case when -1 not in (U1, U2, U3) and U4 = -1 then 123 else U4 end
where [no] = (select top 1 [no] from table1 where -1 in (U1, U2, U3, U4))