Bagaimana untuk Melaksanakan Kemas Kini Bersyarat dalam INSERT MySQL ... PADA KEMASKINI KUNCI DUPLICATE?

Patricia Arquette
Lepaskan: 2024-10-31 06:42:30
asal
608 orang telah melayarinya

How to Implement Conditional Updates in MySQL's INSERT ... ON DUPLICATE KEY UPDATE?

KEMASKINI BERsyarat dalam INSERT ... ON DUPLICATE KEY Update

Dalam MySQL, pernyataan INSERT ... ON DUPLICATE KEY UPDATE membenarkan anda untuk memasukkan baris baharu atau mengemas kini baris sedia ada jika baris dengan kunci unik yang sama sudah wujud. Walau bagaimanapun, kadangkala anda mungkin memerlukan bahagian kemas kini bersyarat, hanya melaksanakan jika syarat tertentu dipenuhi.

Malangnya, klausa WHERE tidak disokong dalam sintaks ON DUPLICATE KEY UPDATE. Untuk mengatasi had ini, anda boleh menggunakan fungsi IF() dalam klausa KEMASKINI.

Fungsi IF() mengambil tiga argumen: syarat, nilai untuk dikembalikan jika syarat itu benar dan nilai untuk pulangkan jika syarat itu palsu. Ini membolehkan anda menentukan syarat yang menyemak sama ada syarat tambahan telah berubah dan kemudian menetapkan nilai secara bersyarat untuk dikemas kini.

Sebagai contoh, pertimbangkan pernyataan berikut:

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 kenyataan ini, lajur last_event_id hanya akan dikemas kini jika last_event_created_at lajur baris sedia ada lebih awal daripada nilai dalam klausa VALUES. Jika tidak, last_event_id akan kekal tidak berubah.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kemas Kini Bersyarat dalam INSERT MySQL ... PADA KEMASKINI KUNCI DUPLICATE?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!