Postgres "Отсутствует от Allause Ввод" Ошибка по запросу с предложением
-
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
.