INSERT ... SELECT ... ON DUPLICATE KEY UPDATE Syntaxklärung
Beim Durchführen einer INSERT-Abfrage, in der einige Spalten möglicherweise bereits vorhanden sind Für die Zieltabelle kann eine ON DUPLICATE KEY UPDATE-Klausel verwendet werden. Mit dieser Klausel können Sie die Aktualisierungskriterien und die zu aktualisierenden Werte angeben.
Die Syntax für die UPDATE-Klausel in einer solchen Abfrage lautet wie folgt:
ON DUPLICATE KEY UPDATE column1=value1, column2=value2, ...;
Der wichtigste Aspekt, den es zu verstehen gilt, ist wie MySQL auf die eingefügten und aktualisierten Werte verweist. Standardmäßig verweist der Teil vor dem Gleichheitszeichen auf die in der INSERT INTO-Klausel genannten Spalten, während der Teil nach dem Gleichheitszeichen auf die in der SELECT-Klausel genannten Spalten verweist.
Betrachten Sie beispielsweise die folgende 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 werden die in der INSERT INTO-Klausel genannten Spalten für die Spaltenzuweisung von verwendet Standard:
Die in der SELECT-Klausel genannten Spalten werden zur Angabe der Aktualisierung verwendet Werte:
Spalten die nicht in der ON DUPLICATE KEY UPDATE-Klausel enthalten sind, werden nicht aktualisiert.
Das obige ist der detaillierte Inhalt vonWie geht MySQL mit der INSERT ... SELECT ... ON DUPLICATE KEY UPDATE-Syntax um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!