Die Aktualisierung mehrere Zeilen mit unterschiedlichen primären Schlüssel in einer Abfrage in PostgreSQL?

Ich das update viele Spalten in mehreren Zeilen in PostgreSQL 9.1. Ich bin derzeit dabei es mit vielen verschiedenen UPDATE Abfragen, die jeweils eine, die funktioniert auf eine andere Zeile (basierend auf dem Primärschlüssel):

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 zu tun haben einige Tausende von Abfragen.

Ist es trotzdem kann ich "bulk update" zu viele Zeilen in einer Abfrage in PostgreSQL? Wenn Sie INSERT können Sie mehrere Zeilen auf einmal: (INSERT INTO mytable (column_a, column_b) VALUES ( (12, 6), (1, 45) );), gibt es so etwas wie, dass für UPDATE?

Etwas wie:

UPDATE mytable SET (id, column_a, column_b) FROM VALUES ( (1, 12, 6), (2, 1, 45), (3, 56, 3),  )

??

Wichtigen Punkte ist, dass jeder 'VALUE' update nur eine Zeile (auf der Basis der WHERE id =). Jede Zeile die gleiche, Feste Anzahl von Spalten, die aktualisiert werden müssen, aber die Zeilen haben unterschiedliche Werte für jede Spalte, so UPDATE mytable SET column_a = 12, column_b = 6 WHERE id IN (1, 2, 3); wird nicht funktionieren.

InformationsquelleAutor Rory | 2013-09-21

Schreibe einen Kommentar