Heim > Datenbank > MySQL-Tutorial > Wie kann ich mehrere Zeilen in einer einzelnen PostgreSQL-Abfrage effizient aktualisieren?

Wie kann ich mehrere Zeilen in einer einzelnen PostgreSQL-Abfrage effizient aktualisieren?

Linda Hamilton
Freigeben: 2025-01-12 22:37:47
Original
849 Leute haben es durchsucht

How Can I Efficiently Update Multiple Rows in a Single PostgreSQL Query?

PostgreSQL: Optimierung mehrerer Zeilenaktualisierungen

PostgreSQL bietet effiziente Methoden zum gleichzeitigen Aktualisieren mehrerer Zeilen, ein erheblicher Vorteil beim Umgang mit umfangreichen Datensätzen oder komplizierten Aktualisierungsbedingungen. Im Gegensatz zu den einzelnen UPDATE-Anweisungen pro Zeile in herkömmlichem SQL bietet PostgreSQL zwei überlegene Alternativen:

Ansatz 1: Bedingte Aktualisierungen mit CASE

Der CASE-Ausdruck ermöglicht die Zuweisung unterschiedlicher Werte zu Zeilen basierend auf bestimmten Kriterien. Die UPDATE-Anweisungsstruktur ist:

<code class="language-sql">UPDATE table_name
SET column_name = CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE default_value
END
WHERE condition;</code>
Nach dem Login kopieren

Um beispielsweise column_a auf 1 zu setzen, wobei column_b „123“ ist, und auf 2, wobei column_b „345“ ist:

<code class="language-sql">UPDATE table_name
SET column_a = CASE
    WHEN column_b = '123' THEN 1
    WHEN column_b = '345' THEN 2
    ELSE column_a  -- Retain original value if condition not met
END
WHERE column_b IN ('123', '345');</code>
Nach dem Login kopieren

Ansatz 2: UPDATE...FROM für prägnante Updates

Das UPDATE...FROM-Konstrukt verwendet eine separate Tabelle oder Unterabfrage, um Aktualisierungswerte zu definieren, was zu saubererem, besser lesbarem Code führt. Die Syntax lautet:

<code class="language-sql">UPDATE table_name
SET column_names = (SELECT column_names FROM subquery)
WHERE condition;</code>
Nach dem Login kopieren

Anwenden auf das vorherige Beispiel:

<code class="language-sql">UPDATE table_name AS t
SET column_a = c.column_a
FROM (
    VALUES
    ('123', 1),
    ('345', 2)
) AS c(column_b, column_a) 
WHERE c.column_b = t.column_b;</code>
Nach dem Login kopieren

Diese PostgreSQL-Techniken verbessern die Effizienz und Codeklarheit im Vergleich zu einzelnen UPDATE Anweisungen erheblich, insbesondere bei der Manipulation großer Datenmengen.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Zeilen in einer einzelnen PostgreSQL-Abfrage effizient aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage