Rumah > pangkalan data > tutorial mysql > Bagaimanakah saya boleh menggunakan MySQL ON DUPLICATE KEY UPDATE untuk Sisipan dan Kemas Kini Berbilang Baris?

Bagaimanakah saya boleh menggunakan MySQL ON DUPLICATE KEY UPDATE untuk Sisipan dan Kemas Kini Berbilang Baris?

Mary-Kate Olsen
Lepaskan: 2025-01-11 07:06:45
asal
465 orang telah melayarinya

How Can I Use MySQL's ON DUPLICATE KEY UPDATE for Multiple Row Inserts and Updates?

Memasukkan dan Mengemas kini Berbilang Baris dengan cekap dalam MySQL menggunakan ON DUPLICATE KEY UPDATE

Klausa

MySQL ON DUPLICATE KEY UPDATE menyediakan kaedah yang diperkemas untuk melaksanakan kedua-dua operasi sisipan dan kemas kini pada berbilang baris dalam satu pertanyaan. Ini amat berguna apabila berurusan dengan kunci unik, mencegah ralat dan memastikan ketekalan data.

Senario:

Pertimbangkan senario di mana anda perlu memasukkan berbilang baris ke dalam jadual, tetapi beberapa baris mungkin sudah wujud disebabkan nilai kunci unik pendua. Daripada menjana ralat, anda mahu mengemas kini baris sedia ada dengan data baharu.

Contoh:

Katakan anda mempunyai pernyataan SQL berikut yang direka untuk memasukkan beberapa baris ke dalam jadual bernama beautiful:

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29);</code>
Salin selepas log masuk

Jika name ialah kunci unik dan beberapa nama sudah wujud, pertanyaan ini akan gagal. Untuk menangani perkara ini, kami menggunakan ON DUPLICATE KEY UPDATE.

Penyelesaian:

Tambahkan klausa ON DUPLICATE KEY UPDATE pada pernyataan INSERT anda:

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age);</code>
Salin selepas log masuk
Salin selepas log masuk

Pertanyaan yang diubah suai ini akan memasukkan baris baharu dengan name unik. Jika pendua name ditemui, hanya lajur age akan dikemas kini kepada nilai yang disediakan dalam klausa VALUES.

Sintaks Moden (MySQL 8.0.19 dan lebih baru):

MySQL 8.0.19 dan versi yang lebih baru menawarkan pendekatan yang lebih mudah dibaca menggunakan alias:

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) AS new ON DUPLICATE KEY UPDATE age = new.age;</code>
Salin selepas log masuk

Di sini, AS new memberikan alias kepada baris baharu, membolehkan anda merujuk medannya dengan jelas (cth., new.age).

Sintaks Lama (versi MySQL sebelum 8.0.19):

Untuk versi MySQL yang lebih lama, kata kunci VALUES digunakan untuk merujuk kepada nilai yang dimasukkan:

<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age);</code>
Salin selepas log masuk
Salin selepas log masuk

Dengan menggunakan ON DUPLICATE KEY UPDATE, anda boleh mengurus kedua-dua sisipan dan kemas kini dengan cekap dalam satu pernyataan SQL, memudahkan kod anda dan meningkatkan prestasi pangkalan data.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan MySQL ON DUPLICATE KEY UPDATE untuk Sisipan dan Kemas Kini Berbilang Baris?. 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