Próbuję zrobić coś takiego w 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)
Ale punkt 1 nie jest możliwy nawet z postgres 9.0, jak wspomniano w dokumentacji ( http://www.postgresql.org/docs/9.0/static/sql-update.html )
Również punkt 2 wydaje się nie działać. Otrzymuję następujący błąd: podzapytanie musi zwracać tylko jedną kolumnę.
Mam nadzieję, że ktoś ma dla mnie obejście. w przeciwnym razie zapytania zajmie trochę czasu :(.
FYI: Staram się wybierać różne kolumny z kilku tabel i przechowywać je w tabeli tymczasowej, aby inna aplikacja mogła łatwo pobrać przygotowane dane.