这是我的查询:
insert into zoning_algorithm_value (algorithm_value_id, value, zoning_id)
values (
61,
21,
7321
)
on conflict(algorithm_value_id)
DO
update set value = 21 where zoning_id = 7321 and algorithm_value_id = 61;
我只引用一张表。这是我遇到的错误。
[42702]错误:列引用“ zoning_id”不明确
只有一个表和一列具有该名称时,如何将其模棱两可?我该如何使此upsert工作?
答案 0 :(得分:1)
您需要指定表名或EXCLUDED
来放在WHERE
子句中的字段之前。
例如,如果您只想在“新” value
和zoning_id
分别为7321和61时更新algorithm_value_id
:
insert into zoning_algorithm_value (algorithm_value_id, value, zoning_id)
values (61, 21, 7321)
on conflict(algorithm_value_id)
DO
update set value = 21 where EXCLUDED.zoning_id = 7321 and EXCLUDED.algorithm_value_id = 61;
如果您希望WHERE
引用“现有”记录值,请使用表名。