2014-12-18 40 views
0

一个专栏中,我有更新MSSQL中的列的问题, 所以基本上我有这样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值(在这个例子中是从no1开始的U2),用我想要的/我声明的值,我只想要从1号更新,不更新4号U2 ...

如何做到这一点?

+1

这是一个有点不清楚。你是否说你想要一个带有单个参数的查询,它将逐行扫描,找到第一个-1条目,将其替换为该参数,然后退出该过程? – KHeaney

回答

2

用途,其中UPDATE语句例如子句:

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)) 
+0

查询的改进很少,您可能还会在以前的一些更简单的版本中找到解决方案 –

+0

查询在语法上不正确。它指向了正确的方向。 –

+0

这似乎工作,但我有,直到U300,我需要设置U1-U300? o.O,和,我可以设置例如:设置U1 =案件U1当-1然后@价值否则U1结束,谢谢:) – likertuban