Bagaimana untuk Melaksanakan Kemas Kini Bersyarat dengan INSERT ... PADA KUNCI DUA dalam SQL?

DDD
Lepaskan: 2024-11-01 06:31:30
asal
916 orang telah melayarinya

How to Implement Conditional Updates with INSERT ... ON DUPLICATE KEY in SQL?

KEMASKINI BERsyarat untuk INSERT ... PADA KUNCI PENDULIK

Memasukkan atau mengemas kini rekod berdasarkan syarat kunci pendua ialah senario biasa dalam pengaturcaraan pangkalan data . Walau bagaimanapun, kadangkala anda mungkin perlu mengehadkan lagi syarat kemas kini, menjadikannya bergantung pada kriteria tambahan. Malangnya, sintaks INSERT ... ON DUPLICATE KEY UPDATE tidak menyokong klausa WHERE secara asli untuk kemas kini bersyarat.

Mengatasi Had

Untuk mengatasi had ini, anda boleh menggunakan fungsi IF() dalam klausa UPDATE. Fungsi IF() membolehkan anda menentukan nilai alternatif berdasarkan ungkapan logik yang diberikan.

Contoh Pelaksanaan

Pertimbangkan INSERT berikut ... PADA KEMASKINI KUNCI DUA pertanyaan:

INSERT INTO daily_events (created_on, last_event_id, last_event_created_at)
VALUES ('2010-01-19', 23, '2010-01-19 10:23:11')
ON DUPLICATE KEY UPDATE
  last_event_id = IF(last_event_created_at < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);
Salin selepas log masuk

Dalam pertanyaan ini, klausa UPDATE mengandungi pernyataan IF() yang menyemak sama ada nilai last_event_created_at sedia ada kurang daripada nilai yang dimasukkan. Jika nilai sedia ada lebih lama, kemas kini akan dilakukan, menggantikan last_event_id dengan nilai baharu. Jika tidak, last_event_id yang sedia ada akan dikekalkan.

Pertimbangan Tambahan

  • Ingat bahawa IF() menilai kepada NULL jika syarat adalah palsu. Oleh itu, nilai kemas kini untuk last_event_id juga akan menjadi NULL jika syarat tidak dipenuhi.
  • Pertimbangkan untuk menggunakan klausa WHERE tambahan atau pertanyaan KEMASKINI yang berasingan untuk memastikan penapisan kemas kini yang dikehendaki.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kemas Kini Bersyarat dengan INSERT ... PADA KUNCI DUA dalam SQL?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!