Heim > Datenbank > MySQL-Tutorial > Wie kann ich MySQLs ON DUPLICATE KEY UPDATE für das Einfügen und Aktualisieren mehrerer Zeilen verwenden?

Wie kann ich MySQLs ON DUPLICATE KEY UPDATE für das Einfügen und Aktualisieren mehrerer Zeilen verwenden?

Mary-Kate Olsen
Freigeben: 2025-01-11 07:06:45
Original
465 Leute haben es durchsucht

How Can I Use MySQL's ON DUPLICATE KEY UPDATE for Multiple Row Inserts and Updates?

Effizientes Einfügen und Aktualisieren mehrerer Zeilen in MySQL mit ON DUPLICATE KEY UPDATE

Die ON DUPLICATE KEY UPDATE-Klausel von MySQL bietet eine optimierte Methode zum Durchführen von Einfüge- und Aktualisierungsvorgängen für mehrere Zeilen innerhalb einer einzigen Abfrage. Dies ist besonders nützlich beim Umgang mit eindeutigen Schlüsseln, um Fehler zu vermeiden und die Datenkonsistenz sicherzustellen.

Szenario:

Stellen Sie sich ein Szenario vor, in dem Sie mehrere Zeilen in eine Tabelle einfügen müssen, einige Zeilen jedoch aufgrund doppelter eindeutiger Schlüsselwerte möglicherweise bereits vorhanden sind. Anstatt Fehler zu generieren, möchten Sie die vorhandenen Zeilen mit den neuen Daten aktualisieren.

Beispiel:

Angenommen, Sie haben die folgende SQL-Anweisung zum Einfügen mehrerer Zeilen in eine Tabelle mit dem Namen beautiful:

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29);</code>
Nach dem Login kopieren

Wenn name ein eindeutiger Schlüssel ist und einige Namen bereits vorhanden sind, schlägt diese Abfrage fehl. Um dies zu handhaben, verwenden wir ON DUPLICATE KEY UPDATE.

Lösung:

Fügen Sie die ON DUPLICATE KEY UPDATE-Klausel zu Ihrer INSERT-Erklärung hinzu:

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age);</code>
Nach dem Login kopieren
Nach dem Login kopieren

Diese geänderte Abfrage fügt neue Zeilen ein, in denen das name eindeutig ist. Wenn ein doppeltes name auftritt, wird nur die Spalte age auf den in der Klausel VALUES angegebenen Wert aktualisiert.

Moderne Syntax (MySQL 8.0.19 und höher):

MySQL 8.0.19 und spätere Versionen bieten einen besser lesbaren Ansatz mit Aliasnamen:

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) AS new ON DUPLICATE KEY UPDATE age = new.age;</code>
Nach dem Login kopieren

Hier weist AS new der neuen Zeile einen Alias ​​zu, sodass Sie deren Felder eindeutig referenzieren können (z. B. new.age).

Ältere Syntax (MySQL-Versionen vor 8.0.19):

Bei älteren MySQL-Versionen wird das Schlüsselwort VALUES verwendet, um auf die eingefügten Werte zu verweisen:

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age);</code>
Nach dem Login kopieren
Nach dem Login kopieren

Durch die Verwendung von ON DUPLICATE KEY UPDATE können Sie sowohl Einfügungen als auch Aktualisierungen effizient innerhalb einer einzigen SQL-Anweisung verwalten, wodurch Ihr Code vereinfacht und die Datenbankleistung verbessert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich MySQLs ON DUPLICATE KEY UPDATE für das Einfügen und Aktualisieren mehrerer Zeilen verwenden?. 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