Error de "falta la entrada de la cláusula FROM" de Postgres en una consulta con la cláusula FROM

StackOverflow https://stackoverflow.com//questions/9643859

  •  10-12-2019
  •  | 
  •  

Pregunta

Estoy intentando utilizar esta consulta en Postgres 9.1.3:

WITH stops AS (
    SELECT citation_id,
           rank() OVER (ORDER BY offense_timestamp,
                     defendant_dl,
                     offense_street_number,
                     offense_street_name) AS stop
    FROM   consistent.master
    WHERE  citing_jurisdiction=1
)

UPDATE consistent.master
SET arrest_id = stops.stop
WHERE citing_jurisdiction=1
  AND stops.citation_id = consistent.master.citation_id;

Recibo este error:

ERROR:  missing FROM-clause entry for table "stops"
LINE 12: SET arrest_id = stops.stop
                         ^

********** Error **********

ERROR: missing FROM-clause entry for table "stops"
SQL state: 42P01
Character: 280

Estoy realmente confundido.La cláusula CON parece correcta según la documentación de Postgres.Si ejecuto la consulta por separado en la cláusula CON, obtengo resultados correctos.

¿Fue útil?

Solución

Desde el bien manual:

Hay dos formas de modificar una tabla utilizando información contenida en otras tablas de la base de datos:utilizando subselecciones o especificando tablas adicionales en el FROM cláusula.

Entonces solo necesitas una cláusula FROM:

WITH stops AS (
    -- ...
)
UPDATE consistent.master
SET arrest_id = stops.stop
FROM stops -- <----------------------------- You missed this
WHERE citing_jurisdiction=1
  AND stops.citation_id = consistent.master.citation_id;

El mensaje de error incluso dice lo mismo:

ERROR:falta la entrada de la cláusula FROM para las "paradas" de la tabla

Otros consejos

Esto también puede suceder si miste a un nombre de tabla.Por ejemplo:

UPDATE profiles SET name = ( profile.first_name ) WHERE id = 1

en lugar de profiles ¡Voy a usar incorrectamente profile!Esto funcionaría:

UPDATE profiles SET name = ( profiles.first_name ) WHERE id = 1

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top