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.
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, ...
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!