更新具有多个联接的JSONB对象

问题描述

我有以下查询-

update ms
set data = json_build_object('OTHER',29.8,'other_PCT','','MEDI_PCT',11.4,'COMMERCIAL',commercial_percent,'NPI Commercial_PCT','')
from ms
join mkt
on ms.data_id = mkt.id
join mix pm
on pm.npi = mkt.npi
and ms.data_id = 6000
and dataset_id = 20

我得到的错误

table name "ms" specified more than once

解决方法

As documented in the manual不要在FROM子句中重复要更新的表:

update ms
  set data = json_build_object('OTHER',29.8,'other_PCT','','MEDI_PCT',11.4,'COMMERCIAL',commercial_percent,'NPI Commercial_PCT','')
from mkt
  join mix pm on pm.npi = mkt.npi
WHERE ms.data_id = mkt.id --<< this replaces your original join between ms and mkt
  and ms.data_id = 6000
  and dataset_id = 20