Estou tentando fazer algo assim no 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)
Mas o ponto 1 não é possível mesmo com o postgres 9.0 conforme mencionado nos documentos ( http://www.postgresql.org/docs/9.0/static/sql-update.html )
Além disso, o ponto 2 parece não funcionar. Estou recebendo o seguinte erro: a subconsulta deve retornar apenas uma coluna.
Espero que alguém tenha uma solução alternativa para mim. caso contrário, as consultas demorarão muito tempo :(.
Para sua informação: Estou tentando selecionar diferentes colunas de várias tabelas e armazená-las em uma tabela temporária, para que outro aplicativo possa buscar facilmente os dados preparados.
fonte
A resposta do OMG Ponies funciona perfeitamente, mas caso você precise de algo mais complexo, aqui está um exemplo de uma consulta de atualização um pouco mais avançada:
fonte
fonte