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.
źródło
Odpowiedź OMG Ponies działa idealnie, ale na wypadek, gdybyś potrzebował czegoś bardziej złożonego, oto przykład nieco bardziej zaawansowanego zapytania aktualizacyjnego:
źródło
źródło