Heim > Datenbank > MySQL-Tutorial > Wie spezifiziere ich Spalten in der MySQL-Klausel „ON DUPLICATE KEY UPDATE' mit „INSERT INTO ... SELECT ...' korrekt?

Wie spezifiziere ich Spalten in der MySQL-Klausel „ON DUPLICATE KEY UPDATE' mit „INSERT INTO ... SELECT ...' korrekt?

Linda Hamilton
Freigeben: 2024-12-03 11:26:16
Original
425 Leute haben es durchsucht

How to Correctly Specify Columns in MySQL's `ON DUPLICATE KEY UPDATE` Clause with `INSERT INTO ... SELECT ...`?

Auflösen der Spaltenaktualisierungssyntax in „INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE“

Diese Abfrage fügt Daten aus dem tmp in die Lee-Tabelle ein Tabelle und aktualisiert vorhandene Zeilen, wenn ein eindeutiger Schlüsselkonflikt auftritt. Allerdings scheint die Syntax für die ON DUPLICATE KEY UPDATE-Klausel unklar zu sein.

Lösung

MySQL geht davon aus, dass die linke Seite der Gleichung nach ON DUPLICATE KEY UPDATE auf Spalten in der INSERT INTO-Klausel verweist , während die rechte Seite auf Spalten in der SELECT-Klausel verweist.

Bedenken Sie beispielsweise Folgendes Abfrage:

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 stimmt die linke Seite der ON DUPLICATE KEY UPDATE-Klausel mit den in der INSERT INTO-Klausel genannten Spalten überein. Die Spalten vor dem Gleichheitszeichen stellen die Spalten in der Leo-Tabelle dar, und die Spalten nach dem Gleichheitszeichen stellen die Werte dar, die aus der SELECT-Klausel aktualisiert werden sollen.

Das obige ist der detaillierte Inhalt vonWie spezifiziere ich Spalten in der MySQL-Klausel „ON DUPLICATE KEY UPDATE' mit „INSERT INTO ... SELECT ...' korrekt?. 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