У меня есть таблица "queued_items".Текущие «user_id» и «item_id» являются неправильными, но хранятся в других таблицах: users.imported_id и items.imported_id
Попытка получить импортированный_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)
... потому что это безумно медленно