Rumah >pangkalan data >tutorial mysql >Bagaimana MySQL Mengendalikan INSERT ... PILIH ... PADA DUPLICATE KEY UPDATE Syntax?

Bagaimana MySQL Mengendalikan INSERT ... PILIH ... PADA DUPLICATE KEY UPDATE Syntax?

Patricia Arquette
Patricia Arquetteasal
2024-12-06 06:59:11717semak imbas

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

INSERT ... PILIH ... PADA KEMASKINI KUNCI PENDUA Penjelasan Sintaks

Apabila melakukan pertanyaan INSERT di mana sesetengah lajur mungkin sudah wujud dalam jadual sasaran, klausa ON DUPLICATE KEY UPDATE boleh digunakan. Klausa ini membolehkan anda menentukan kriteria kemas kini dan nilai untuk dikemas kini.

Sintaks untuk klausa KEMASKINI dalam pertanyaan sedemikian adalah seperti berikut:

ON DUPLICATE KEY UPDATE column1=value1, column2=value2, ...;

Aspek utama untuk difahami ialah bagaimana MySQL merujuk nilai yang dimasukkan dan dikemas kini. Secara lalai, bahagian sebelum tanda sama merujuk kepada lajur yang dinamakan dalam klausa INSERT INTO, manakala bahagian selepas tanda sama merujuk kepada lajur yang dinamakan dalam klausa SELECT.

Sebagai contoh, pertimbangkan pertanyaan berikut:

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

Dalam pertanyaan ini, lajur yang dinamakan dalam klausa INSERT INTO akan digunakan untuk penugasan lajur oleh lalai:

  • exp_id
  • dicipta_oleh
  • lokasi
  • haiwan
  • masa mula
  • masa tamat

Lajur yang dinamakan dalam klausa SELECT akan digunakan untuk nyatakan kemas kini nilai:

  • t.lokasi
  • t.haiwan
  • t.masa mula
  • t .masa akhir
  • 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

Lajur yang tidak termasuk dalam klausa ON DUPLICATE KEY UPDATE tidak akan dikemas kini.

Atas ialah kandungan terperinci Bagaimana MySQL Mengendalikan INSERT ... PILIH ... PADA DUPLICATE KEY UPDATE Syntax?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn