J'essaye de faire quelque chose comme ça dans 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)
Mais le point 1 n'est pas possible même avec postgres 9.0 comme mentionné dans la documentation ( http://www.postgresql.org/docs/9.0/static/sql-update.html )
Le point 2 semble également ne pas fonctionner. j'obtiens l'erreur suivante: la sous-requête ne doit renvoyer qu'une seule colonne.
J'espère que quelqu'un a une solution de contournement pour moi. sinon, les requêtes prendront un certain temps :(.
FYI: J'essaie de sélectionner différentes colonnes de plusieurs tables et de les stocker dans une table temporaire, afin qu'une autre application puisse facilement récupérer les données préparées.
la source
La réponse d'OMG Ponies fonctionne parfaitement, mais juste au cas où vous auriez besoin de quelque chose de plus complexe, voici un exemple de requête de mise à jour légèrement plus avancée:
la source
la source