Heim > Datenbank > MySQL-Tutorial > Wie kann ich vorhandene Datensätze effizient aktualisieren, während ich mit MySQLs „INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE' neue einfüge?

Wie kann ich vorhandene Datensätze effizient aktualisieren, während ich mit MySQLs „INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE' neue einfüge?

Susan Sarandon
Freigeben: 2024-12-01 03:42:10
Original
720 Leute haben es durchsucht

How Can I Efficiently Update Existing Records While Inserting New Ones Using MySQL's `INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE`?

Verwenden von „INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE“ zum Aktualisieren vorhandener Datensätze

Beim Einfügen von Daten in eine Tabelle, in der bestimmte Spalten möglicherweise bereits vorhanden sind vorhanden sind, möchten Sie diese Spalten möglicherweise mit neuen Werten aktualisieren. MySQL bietet mit der „ON DUPLICATE KEY UPDATE“-Klausel eine praktische Syntax für solche Szenarien.

In Ihrer Abfrage haben Sie eine „INSERT INTO“-Anweisung, gefolgt von einer „SELECT“-Anweisung. Das Ziel besteht darin, neue Zeilen in die „Lee“-Tabelle einzufügen und vorhandene Zeilen zu aktualisieren, die einem eindeutigen Schlüssel entsprechen. Dazu müssen Sie in der Klausel „ON DUPLICATE KEY UPDATE“ angeben, welche Spalten aktualisiert werden sollen.

MySQL interpretiert den Teil vor dem Gleichheitszeichen (=) als Verweis auf die in der Klausel „INSERT INTO“ genannten Spalten "-Klausel. Der Teil nach dem Gleichheitszeichen bezieht sich auf die Spalten in der „SELECT“-Klausel.

Zum Beispiel:

INSERT INTO lee(exp_id, created_by, location, animal, starttime, endtime, entct, 
                inact, inadur, inadist, 
                smlct, smldur, smldist, 
                larct, lardur, lardist, 
                emptyct, emptydur)
SELECT id, uid, t.location, t.animal, t.starttime, t.endtime, t.entct, 
       t.inact, t.inadur, t.inadist, 
       t.smlct, t.smldur, t.smldist, 
       t.larct, t.lardur, t.lardist, 
       t.emptyct, t.emptydur 
FROM tmp t WHERE uid=x
ON DUPLICATE KEY UPDATE entct=t.entct, inact=t.inact, ...
Nach dem Login kopieren

In dieser Abfrage sind dies die Spalten in der „INSERT INTO“-Klausel Nicht aktualisiert sind „exp_id“, „created_by“, „location“, „animal“, „starttime“ und „endtime“. Alle anderen Spalten wie „entct“, „inact“, „inadur“, „inadist“ usw. werden mit Werten aus der „SELECT“-Klausel aktualisiert.

Durch die Verwendung der richtigen Syntax können Sie dies tun Führen Sie Einfügungen und Aktualisierungen in einer einzigen Abfrage durch und stellen Sie so sicher, dass Ihre Daten effizient auf dem neuesten Stand gehalten werden.

Das obige ist der detaillierte Inhalt vonWie kann ich vorhandene Datensätze effizient aktualisieren, während ich mit MySQLs „INSERT INTO ... SELECT ... ON DUPLICATE KEY UPDATE' neue einfüge?. 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