Ich kann verwenden, CASE
um auszuwählen, welche Spalten in einer SELECT
Abfrage angezeigt werden sollen (Postgres), wie folgt:
SELECT CASE WHEN val = 0 THEN column_x
WHEN val = 1 THEN column_y
ELSE 0
END AS update, ...
Ist etwas Ähnliches überhaupt möglich, wenn eine UPDATE
Abfrage in Postgres ausgeführt wird (dh wählen Sie aus, welche Spalten aktualisiert werden sollen)? Ich nehme nicht an, da ich nichts darüber finden konnte, aber vielleicht hat jemand eine clevere Alternative (außer eine Prozedur zu verwenden oder jede Spalte mit a CASE
zu aktualisieren, um zu bestimmen, ob dem Wert der Spalte ein neuer Wert zugewiesen oder einfach der vorhandene neu zugewiesen werden soll Wert). Wenn es keine einfache Alternative gibt, akzeptiere ich das natürlich auch als Antwort.
Zusätzliche Informationen : In meinem Fall habe ich 14 potenzielle Spalten, die aktualisiert werden können, wobei nur eine pro übereinstimmender Zeile aktualisiert wird (die zu aktualisierende Tabelle wird mit einer anderen in der Abfrage verknüpft). Die Anzahl der zu aktualisierenden Zeilen wird höchstwahrscheinlich variieren und Dutzende oder Hunderte betragen. Ich glaube, dass Indizes für die Beitrittsbedingungen vorhanden sind.