经过一些计算,我正在编制一份需要更新的记录列表:
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来创建这些单独的更新查询,还是有更好的方法?
答案 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
。如果是这样,临时表中的不确定记录将用于更新。