我有一张桌子Item
:
id | price
---+--------
1 | 20000
2 | 30000
3 | 40000
4 | 43000
如何在单个SQL查询中更新价格列id(1)= 1000,id(2)= 2000?
答案 0 :(得分:3)
使用case
:
update items
set price = (case when id = 1 then 1000 when id = 2 then 2000 else price end)
where id in (1, 2);
您也可以使用from
子句来编写此代码:
update items
set price = v.price
from (values (1, 1000), (2, 2000)) v(id, price)
where v.id = items.id;
这也比较安全,请确保ID确实匹配,并且不会意外更新多余的行。