Я изолирую проблему от гораздо более сложного запроса. Здесь тестовый сценарий
DROP TABLE test;
CREATE TABLE test (
id integer,
description varchar(100)
);
INSERT INTO test(id, description) VALUES (1,'new');
INSERT INTO test(id, description) VALUES (2,'new');
Если я выполню запрос:
SELECT * FROM test WHERE id IN (UPDATE test set description='test' RETURNING id)
Я получаю следующую ошибку:
ОШИБКА: синтаксическая ошибка в или около "теста"
ЛИНИЯ 1: ВЫБРАТЬ * ИЗ ТЕСТА, ГДЕ id (ОБНОВИТЬ описание набора тестов = 'test' RE ...
^
*** Fehler ***
ОШИБКА: синтаксическая ошибка в или около "теста"
Состояние SQL: 42601
Zeichen: 37
Тем не менее, если я только запускаю statemennt
UPDATE test set value='test' RETURNING id
Я получаю результат с 2 строками:
1
2
Если я подставлю этот результат, у меня будет такой запрос:
SELECT * FROM test WHERE id IN (1,2);
с результатом:
1; "тест"
2, "тест"
Почему я не получаю тот же результат с моим первоначальным утверждением?