Geben Sie ein Array wie folgt an:
%Vor%und eine Tabelle wie diese:
%Vor%Wie kann ich die Array-Werte in eine Tabelle einfügen? Grob gesagt möchte ich so etwas mit SQL machen:
%Vor%Die aktualisierte Tabelle sollte so aussehen
%Vor%UPDATE: Ich benutze Python psycopg2, aber ich frage mich, ob es einen Weg mit reinem SQL gibt.
Sie müssen irgendwie einen Array- "Index" für jede Zeile in der Tabelle generieren.
Wenn der column1
-Wert immer mit dem Array-Index übereinstimmt, können Sie das so machen.
Wenn jedoch der Wert in column1
nicht den Array-Index widerspiegelt, müssen Sie den Array-Index basierend auf der Sortierreihenfolge in der Tabelle generieren. Wenn dies der Fall ist, können Sie so etwas tun:
Wenn Ihre Tabelle einen richtigen Primärschlüssel hat, können Sie diesen anstelle der Spalte ctid
verwenden.
Verwenden Sie in Postgres 9.4 den WITH ORDINALITY
dafür. Schneller und sauberer als alles andere.
Unter der Annahme, dass column1
die Position von column2
im angegebenen Array darstellt, werden nur Spalten aktualisiert, die aktualisiert werden sollen und keine anderen Zeilen berühren (wie die einfache Abfrage in @ a_horse).
Die Ordinalposition eines Elements ist auch der Standard-Array-Index in einem 1-dimensionalen Array, aber Postgres erlaubt beliebige Array-Indizes:
Dies funktioniert unabhängig von tatsächlichen Array-Indizes.
Tags und Links sql arrays postgresql