I have a queued_items table. The current "user_id" and "item_id" are incorrect, but are stored in other tables: users.imported_id and items.imported_id
Trying to grab import_id from other tables and update. Here is what I tried
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
Getting this error:
Error : ERROR: table name "queued_items" specified more than once
Tried to delete the FROM line, got this error:
Error : ERROR: syntax error at or near "INNER" LINE 4: INNER JOIN users ON queued_items.user_id = users.imported_id ^
I also tried adding an alias to the FROM and JOIN clauses
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
Received this error:
Error : ERROR: column "queued_items" of relation "queued_items" does not exist LINE 2: SET queued_items.user_id = users.id, ^
Any ideas? (postgres 9)
PS Trying to avoid this subquery:
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)
... because he is crazy slow
source share