У меня есть таблица queued_items. Текущие "user_id" и "item_id" являются неправильными, но хранятся в других таблицах: users.imported_id и items.imported_id
Попытка захватить import_id из других таблиц и обновить. Вот что я пробовал
UPDATE queued_items
SET queued_items.user_id = users.id,
queued_items.item_id = items.id
FROM queued_items
INNER JOIN users ON queued_items.user_id = users.imported_id
INNER JOIN items ON queued_items.item_id = items.imported_id
Получение этой ошибки:
Error : ERROR: table name "queued_items" specified more than once
Пробовал удалить строку FROM, получил эту ошибку:
Error : ERROR: syntax error at or near "INNER"
LINE 4: INNER JOIN users ON queued_items.user_id = users.imported_id
^
Я также попытался добавить псевдоним в условия FROM и JOIN
UPDATE queued_items
SET queued_items.user_id = users.id,
queued_items.item_id = items.id
FROM queued_items as qi
INNER JOIN users ON qi.user_id = users.imported_id
INNER JOIN items ON qi.item_id = items.imported_id
Получена эта ошибка:
Error : ERROR: column "queued_items" of relation "queued_items" does not exist
LINE 2: SET queued_items.user_id = users.id,
^
Любые идеи? (postgres 9)
PS Попытка избежать этого подзапроса:
UPDATE queued_items
SET user_id = (SELECT id FROM users WHERE queued_items.user_id = users.imported_id),
item_id = (SELECT id FROM items WHERE queued_items.item_id = items.imported_id)
... потому что он сумасшедший медленный