如何为临时表中的每一行写更新查询?

时间:2016-03-21 15:49:30

标签: sql sql-server

经过一些计算,我正在编制一份需要更新的记录列表:

ID    Name    Value
-------------------
1     A       foo
2     B       bar
9     C       baz

我想只在主表中更新这些记录:

update table set name = A, value = foo where ID = 1
update table set name = B, value = bar where ID = 2
update table set name = C, value = baz where ID = 9

实际上,更新列表很长。我是否需要动态SQL来创建这些单独的更新查询,还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

根据标题,我猜测新数据是在临时表中。假设每个id仅提及一次,您可以使用join

update t
    set name = temp.name,
        values = temp.value
    from t join
         #temp temp
         on t.id = temp.id;

即使join多次出现,您也可以使用id。如果是这样,临时表中的不确定记录将用于更新。