Aktualisieren oder Einfügen (mehrere Zeilen und Spalten) aus der Unterabfrage in PostgreSQL
Ich versuche, etwas zu tun, wie dies in 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)
Aber Punkt 1 ist nicht möglich, selbst mit postgres 9.0 wie bereits in den docs (http://www.postgresql.org/docs/9.0/static/sql-update.html)
Auch Punkt 2 scheint nicht zu arbeiten. ich bin immer der folgende Fehler: subquery must return nur eine Spalte.
Hoffe, jemand hat einen workaround für mich. ansonsten werden die Abfragen dauern eine looot Zeit :(.
FYI: ich bin versucht, um zu wählen, verschiedene Spalten aus mehreren Tabellen und speichert Sie in eine temporäre Tabelle, so dass eine andere Anwendung kann leicht abrufen der aufbereiteten Daten.
InformationsquelleAutor der Frage dforce | 2010-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für das UPDATE
Verwenden:
Für die INSERT -
Verwenden:
Brauchen Sie nicht die
VALUES
syntax, wenn Sie ein AUSWÄHLEN, füllen Sie die Werte EINFÜGEN.InformationsquelleAutor der Antwort OMG Ponies
InformationsquelleAutor der Antwort Walter
OMG Ponys Antwort funktioniert perfekt, aber nur für den Fall, Sie brauchen etwas komplexer, hier ist ein Beispiel für einen leicht erweiterten update-Abfrage:
InformationsquelleAutor der Antwort David Namenyi