如何在单个SQL查询中使用两个不同的ID和不同的值更新一列中的两列?

如何在单个SQL查询中使用两个不同的ID和不同的值更新一列中的两列?,sql,postgresql,Sql,Postgresql,我有一个表项: id | price ---+-------- 1 | 20000 2 | 30000 3 | 40000 4 | 43000 如何在单个SQL查询中更新价格列id(1)=1000,id(2)=2000?使用案例: update items set price = (case when id = 1 then 1000 when id = 2 then 2000 else price end) where id in (1, 2); 您也可以使用fro

我有一个表

id | price
---+--------
1  | 20000
2  | 30000
3  | 40000
4  | 43000
如何在单个SQL查询中更新价格列id(1)=1000,id(2)=2000?

使用
案例

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确实匹配,并且不会意外更新额外的行