Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengemas kini Berbilang Baris MySQL Secara serentak?

Bagaimanakah Saya Boleh Mengemas kini Berbilang Baris MySQL Secara serentak?

DDD
DDDasal
2025-01-21 20:07:14843semak imbas

How Can I Update Multiple MySQL Rows Simultaneously?

MySQL: Mengemas kini Berbilang Baris dengan Cekap

Soalan: Adakah pengemaskinian serentak berbilang baris MySQL mungkin?

Jawapan: Sudah tentu! Kenyataan INSERT ... ON DUPLICATE KEY UPDATE menyediakan penyelesaian yang cekap.

Contoh Ilustrasi:

Katakan kita mempunyai jadual berstruktur seperti berikut dan kita perlu menggunakan beberapa kemas kini:

Name id Col1 Col2
Row1 1 6 1
Row2 2 2 3
Row3 3 9 5
Row4 4 16 8

Kemas Kini Diperlukan:

  • UPDATE table SET Col1 = 1 WHERE id = 1;
  • UPDATE table SET Col1 = 2 WHERE id = 2;
  • UPDATE table SET Col2 = 3 WHERE id = 3;
  • UPDATE table SET Col1 = 10 WHERE id = 4;
  • UPDATE table SET Col2 = 12 WHERE id = 4;

Kemas Kini Disatukan Menggunakan INSERT ... ON DUPLICATE KEY UPDATE:

Daripada berbilang penyataan UPDATE individu, kita boleh mencapai hasil yang sama dengan satu pertanyaan yang lebih cekap:

<code class="language-sql">INSERT INTO table (id, Col1, Col2) VALUES (1, 1, 1), (2, 2, 3), (3, 9, 3), (4, 10, 12)
ON DUPLICATE KEY UPDATE Col1 = VALUES(Col1), Col2 = VALUES(Col2);</code>

Pertanyaan ini cuba memasukkan baris baharu. Jika baris dengan id yang ditentukan sudah wujud (disebabkan oleh kunci utama atau indeks unik pada id), klausa ON DUPLICATE KEY UPDATE berkuat kuasa, mengemas kini nilai Col1 dan Col2 berdasarkan nilai yang disediakan dalam klausa VALUES(). Kaedah ini meningkatkan prestasi dengan ketara berbanding dengan melaksanakan beberapa pernyataan UPDATE individu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas kini Berbilang Baris MySQL Secara serentak?. 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