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

时间:2019-01-26 17:49:35

标签: sql postgresql

我有一张桌子Item

id | price
---+--------
1  | 20000
2  | 30000
3  | 40000
4  | 43000

如何在单个SQL查询中更新价格列id(1)= 1000,id(2)= 2000?

1 个答案:

答案 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确实匹配,并且不会意外更新多余的行。