Ich muss viele Spalten in vielen Zeilen in PostgreSQL 9.1 aktualisieren. Ich mache es zur Zeit mit vielen verschiedenen UPDATE
Anfragen, von denen jeder, der auf einer anderen Zeile (basierend auf dem Primärschlüssel) funktioniert:Aktualisieren mehrerer Zeilen mit unterschiedlichen Primärschlüssel in einer Abfrage in PostgreSQL?
UPDATE mytable SET column_a = 12, column_b = 6 WHERE id = 1;
UPDATE mytable SET column_a = 1, column_b = 45 WHERE id = 2;
UPDATE mytable SET column_a = 56, column_b = 3 WHERE id = 3;
ich mehrere tausend dieser Abfragen zu tun haben.
Gibt es sowieso ich kann viele Zeilen in einer Abfrage in PostgreSQL "Bulk-update"? Wenn Sie INSERT
verwenden, können Sie mehrere Zeilen gleichzeitig einfügen: (INSERT INTO mytable (column_a, column_b) VALUES ((12, 6), (1, 45));
), Gibt es so etwas für UPDATE
?
Etwas wie:
UPDATE mytable SET (id, column_a, column_b) FROM VALUES ((1, 12, 6), (2, 1, 45), (3, 56, 3), …)
??
Wichtig ist, dass jeder 'VALUE' nur eine Zeile aktualisiert (basierend auf WHERE id =
). Jede Zeile hat die gleiche feste Anzahl von Spalten, die aktualisiert werden müssen, aber jede Zeile hat andere Werte für jede Spalte, so dass UPDATE mytable SET column_a = 12, column_b = 6 WHERE id IN (1, 2, 3);
nicht funktioniert.
Dieser Ansatz hat gut für mich gearbeitet !! Vielen Dank!! Funktioniert auch mit dem Verbinden mehrerer Schlüssel/Spalten. Das heißt, "wobei c.id = m.id UND c.column_a = m.column_a"; –