简化 postgres 查询

simplifying postgres queries

注:要求改进工作代码。

我的data专栏如下

{
   "color":"red",
   "toy":{
      "id":27,
      "name":"Truck",
      "price":12,
      "available":true
   },
   "quantity":"12"
}

在上面的数据中,我想将available设置为false,将price设置为zero

为此,我使用以下代码。

UPDATE toys 
SET data=JSONB_SET(data, '{toy,available}','false') 
WHERE data->'toy'->>'id'='27';

UPDATE toys 
SET data=JSONB_SET(data, '{toy,price}','0') 
WHERE data->'toy'->>'id'='27';

我的问题是可以在单个查询中更新两个值吗?

谢谢。

当然可以:

UPDATE toys
SET data = jsonb_set(
              jsonb_set(data, '{toy,available}', 'false'),
              '{toy,price}',
              '0'
           )
WHERE data->'toy'->>'id'='27';