Tengo una tabla "queued_items". Los "user_id" y "item_id" actuales son incorrectos, pero se almacenan en las otras tablas: users.imported_id y items.imported_idError: ERROR: nombre de tabla especificado más de una vez
Intentando tomar import_id de las otras tablas y actualizar. Esto es lo que he intentado
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
conseguir este error:
Error : ERROR: table name "queued_items" specified more than once
intentado quitar la línea De, dio este mensaje:
Error : ERROR: syntax error at or near "INNER"
LINE 4: INNER JOIN users ON queued_items.user_id = users.imported_id
^
También probé la adición de un alias para el FROM y unirse condiciones
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
Consiguió este error:
Error : ERROR: column "queued_items" of relation "queued_items" does not exist
LINE 2: SET queued_items.user_id = users.id,
^
¿Alguna idea? (postgres 9)
PS Tratando de evitar este sub-consulta:
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)
... porque es una locura lenta
¿Ha intentado utilizar un alias para 'queued_items' en la cláusula' FROM' y las condiciones de unión? –
Acabo de probar eso. Actualizaré mi publicación con los resultados. – jmccartie
Elimina 'queued_items' de ambas partes de la cláusula' SET', está esperando que los lados izquierdos siempre se refieran solo a las columnas de la tabla que estás actualizando. –