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
Lepaskan: 2024-12-06 06:59:11
asal
633 orang telah melayarinya

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, ...;
Salin selepas log masuk

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, ...;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan