Я выделил проблему из гораздо более сложного запроса. Здесь тестовый сценарий
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: SELECT * FROM test WHERE id (UPDATE test set description = 'test' RE ... ^
*** Фелер ** *
ОШИБКА: синтаксическая ошибка в "тесте" или рядом с ним. Статус SQL: 42601 Zeichen: 37
Однако, если я запускаю только statemennt
UPDATE test set value='test' RETURNING id
, я получаю результат с двумя строками:
1 2
Если я подставлю этот результат, у меня будет запрос вроде:
SELECT * FROM test WHERE id IN (1,2);
с результатом:
1; "test" 2; "test"
Почему я не получаю тот же результат с моим начальным утверждением?