Heim >Datenbank >MySQL-Tutorial >Kann MySQL mehrere Zeilen in einer einzigen Abfrage aktualisieren?

Kann MySQL mehrere Zeilen in einer einzigen Abfrage aktualisieren?

DDD
DDDOriginal
2025-01-21 20:21:10455Durchsuche

Can MySQL Update Multiple Rows in a Single Query?

MySQL-Batch-Zeilenaktualisierung

MySQLs INSERT-Anweisung ermöglicht das gleichzeitige Einfügen mehrerer Datenzeilen. Aber kann ich mehrere Zeilen mit einer einzigen Abfrage aktualisieren?

Batch-Update-Abfrage

Ja, Sie können die INSERT ... ON DUPLICATE KEY UPDATE-Anweisung verwenden, um mehrere Zeilen gleichzeitig zu aktualisieren. Wenn eine Zeile in eine Tabelle eingefügt wird und bereits ein Primärschlüssel oder ein eindeutiger Schlüssel vorhanden ist, geschieht Folgendes:

  • Wenn die INSERT-Anweisung eine DUPLICATE KEY UPDATE-Klausel enthält, wird die vorhandene Zeile mit dem in der Aktualisierungsklausel bereitgestellten Wert aktualisiert.
  • Wenn die INSERT-Anweisung keine DUPLICATE KEY UPDATE-Klausel enthält, wird ein Fehler generiert.

Beispiel

Betrachten Sie das folgende Formular:

Name id Col1 Col2
Row1 1 6 1
Row2 2 2 3
Row3 3 9 5
Row4 4 16 8

Wir möchten die folgenden Aktualisierungen in einer einzigen Abfrage zusammenfassen:

<code class="language-sql">UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;</code>

Die entsprechende Batch-Update-Abfrage mit INSERT ... ON DUPLICATE KEY UPDATE lautet wie folgt:

<code class="language-sql">INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12)
ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=VALUES(Col2);</code>

Diese Abfrage fügt eine neue Zeile ein, wenn diese noch nicht vorhanden ist, oder aktualisiert eine vorhandene Zeile, wenn der Primärschlüssel bereits in der Tabelle vorhanden ist.

Das obige ist der detaillierte Inhalt vonKann MySQL mehrere Zeilen in einer einzigen Abfrage aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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