Heim >Datenbank >MySQL-Tutorial >Wie kann ich MySQLs ON DUPLICATE KEY UPDATE für das Einfügen und Aktualisieren mehrerer Zeilen verwenden?
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>
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>
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>
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>
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!