У меня есть база данных 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
. Я не уверен, как бы мне их совместить.
Есть какие-нибудь советы, как действовать дальше?