sub * select * являются временными, они не могут быть обновлены. Звучит так, будто вы хотите временную таблицу
CREATE TEMP TABLE temp_grades AS
SELECT school, grade FROM simulated_records;
UPDATE temp_grades SET grade = 'A';
РЕДАКТИРОВАТЬ: re ваш комментарий:
UPDATE simulated_records
FROM (SELECT id FROM simulated_records WHERE school='Yale' LIMIT 10) AS result
SET grade='A'
WHERE id = result.id
RETURNING *;
В приведенном выше примере используется операция UPDATE FROM с использованием подвыбора
РЕДАКТИРОВАТЬ 2: для второго комментария:
Если у вас нет опечатки, возможно, у вас старая версия. Есть альтернативный способ сделать это с лучшей поддержкой:
UPDATE simulated_records SET grade = 'A' WHERE id IN
(SELECT id FROM simulated_records WHERE school = 'Yale' LIMIT 10);