【发布时间】:2020-07-09 09:11:54
【问题描述】:
我有一个 postgres 数据库,我偶尔会在其中运行以下查询:
UPDATE b_address ba
SET op_id = op.land_id
FROM openb op
WHERE ba.str = op.name
AND (ba.openb_id IS NULL OR ba.openb_id = '');
这可行,但我现在只想对表b_address 中的记录执行此操作,其中source 等于"E"。然而,源存储在另一个名为b_b 的表中,我可以像这样加入b_address:
SELECT ba.id, bb.source
FROM b_address ba
JOIN b_b bb ON bb.id = ba.bb_id
WHERE bb.source = 'E';
我现在正努力将此联接添加到 UPDATE 查询中,以便仅更新来自 b_address 且具有 source = 'E' 的记录。
我试过了:
UPDATE b_address ba
SET op_id = op.land_id
FROM openb op
JOIN b_b bb ON bb.id = ba.bb_id
WHERE bb.source = 'E'
AND ba.str = op.name
AND (ba.openb_id IS NULL OR ba.openb_id = '');
但是我得到了这个:
ERROR: invalid reference to FROM-clause entry for table "ba"
Hint: There is an entry for table "ba", but it cannot be referenced from this part of the query.
这是有道理的,因为表总是在FROM 子句中连接到表。不过,我不确定如何将它们组合在一起。
关于如何进行的任何提示?
【问题讨论】:
标签: sql postgresql join sql-update