Обновление или вставка (несколько строк и столбцов) из подзапроса в PostgreSQL

Я пытаюсь сделать что-то вроде этого в postgres:

  • UPDATE table1 SET (col1, col2) = (SELECT col2, col3 FROM othertable WHERE othertable.col1 = 123);

  • INSERT INTO table1 (col1, col2) VALUES (SELECT col1, col2 FROM othertable)

Но пункт 1 невозможен даже с postgres 9.0, как указано в документации ( http://www.postgresql.org/docs/9.0/static/sql-update.html )

Также пункт 2 кажется не работает. Я получаю следующая ошибка: подзапрос должен возвращать только один столбец.

Надеюсь, у кого-нибудь есть обходной путь для меня. В противном случае запросы займут много времени :(.

К вашему сведению: я пытаюсь выбрать разные столбцы из нескольких таблиц и сохранить их во временную таблицу, s o что другое приложение может легко получить подготовленные данные.

102
задан Juan Mellado 1 May 2012 в 18:24
поделиться