Обновить подтаблицу - PullRequest
1 голос
/ 22 марта 2012

Допустим, у меня есть подтаблица с именем result.

SELECT school, grade 
  FROM (SELECT school, grade 
          FROM simulated_records 
         LIMIT 10) as result

Как мне обновить столбцы этой подтаблицы? Я попробовал:

UPDATE result 
   SET grade = 'A' 

... но я получаю ошибку.

1 Ответ

2 голосов
/ 22 марта 2012

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...