是否可以更新键/值对中的行?

时间:2015-11-10 14:50:14

标签: sql sql-server

通过例子解释:

UPDATE Table SET value=(22,55,99) WHERE id IN (2,5,9)

因此,id=2value的行设置为22。将id=5value的行设置为55。等

3 个答案:

答案 0 :(得分:14)

您可以使用派生表:

update t set
    value = a.value
from Table as t
    inner join (values
        (22, 2),
        (55, 5),
        (99, 9)
    ) as a(id, value) on a.id = t.id

对我而言,这是最优雅的方式,并且它也很容易被夸大(如果你愿意,你可以添加更多列)

答案 1 :(得分:1)

是的,但不像你有:

UPDATE Table
SET value=case when id=2 then 22 when id=5 then 55 when id=9 then 99 end
WHERE id in (2,5,9)

如果您必须为大量字段/记录执行此操作,那么最好只发出一堆专用的update查询。

答案 2 :(得分:0)

使用CASE表达式选择更新值:

UPDATE Table SET value = case id when 2 then 22
                                 when 5 then 55
                                 when 9 then 99
                         end
WHERE id IN (2,5,9)