Heim >Datenbank >MySQL-Tutorial >Wie geht MySQL mit der INSERT ... SELECT ... ON DUPLICATE KEY UPDATE-Syntax um?

Wie geht MySQL mit der INSERT ... SELECT ... ON DUPLICATE KEY UPDATE-Syntax um?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-06 06:59:11652Durchsuche

How Does MySQL Handle INSERT ... SELECT ... ON DUPLICATE KEY UPDATE Syntax?

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:

  • exp_id
  • erstellt von
  • Standort
  • Tier
  • Startzeit
  • Endzeit

Die in der SELECT-Klausel genannten Spalten werden zur Angabe der Aktualisierung verwendet Werte:

  • 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.lar dur
  • t.lardist
  • t.emptyct
  • t.emptydur

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!

Stellungnahme:
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