Estoy tratando de hacer algo como esto en 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)
Pero el punto 1 no es posible incluso con postgres 9.0 como se menciona en los documentos ( http://www.postgresql.org/docs/9.0/static/sql-update.html )
Además, el punto 2 parece no funcionar. Recibo el siguiente error: la subconsulta debe devolver solo una columna.
Espero que alguien tenga una solución para mí. de lo contrario, las consultas tomarán mucho tiempo :(.
FYI: Estoy tratando de seleccionar diferentes columnas de varias tablas y almacenarlas en una tabla temporal, para que otra aplicación pueda recuperar fácilmente los datos preparados.
fuente
La respuesta de OMG Ponies funciona perfectamente, pero en caso de que necesite algo más complejo, aquí hay un ejemplo de una consulta de actualización un poco más avanzada:
fuente
fuente