Postgres "Отсутствует от Allause Ввод" Ошибка по запросу с предложением

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

  •  10-12-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать этот запрос в 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;
.

Я получаю эту ошибку:

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
.

Я действительно запутался.Пункт с предложением CREAT PORT POSTGRES.Если я отдельно запустим запрос в пункте с предложением, я получаю правильные результаты.

Это было полезно?

Решение

из

от Точное руководство :

Есть два способа изменить таблицу с использованием информации, содержащейся в других таблицах в базе данных: с использованием подразделения или указание дополнительных таблиц в пункте 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;
.

сообщение об ошибке даже говорит так много:

Ошибка: отсутствует в пункте записи для таблицы "Остановки"

Другие советы

Это также может произойти, если вы не называете имя таблицы.Например:

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

вместо profiles I неправильно использовал profile !!Это будет работать:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top