MySQL INSERT
membenarkan berbilang baris data dimasukkan secara serentak. Tetapi, bolehkah saya mengemas kini berbilang baris dengan satu pertanyaan?
Ya, anda boleh menggunakan pernyataan INSERT ... ON DUPLICATE KEY UPDATE
untuk mengemas kini berbilang baris sekaligus. Apabila satu baris dimasukkan ke dalam jadual dan kunci utama atau unik sudah wujud, perkara berikut berlaku:
INSERT
mengandungi klausa DUPLICATE KEY UPDATE
, maka baris sedia ada dikemas kini menggunakan nilai yang disediakan dalam klausa kemas kini. INSERT
tidak mengandungi klausa DUPLICATE KEY UPDATE
, ralat akan dihasilkan. Pertimbangkan borang berikut:
Name | id | Col1 | Col2 |
---|---|---|---|
Row1 | 1 | 6 | 1 |
Row2 | 2 | 2 | 3 |
Row3 | 3 | 9 | 5 |
Row4 | 4 | 16 | 8 |
Kami ingin menggabungkan kemas kini berikut menjadi satu pertanyaan:
<code class="language-sql">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;</code>
Pertanyaan kemas kini kelompok yang sepadan menggunakan INSERT ... ON DUPLICATE KEY UPDATE
adalah seperti berikut:
<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 memasukkan baris baharu jika ia belum wujud atau mengemas kini baris sedia ada jika kunci utama sudah wujud dalam jadual.
Atas ialah kandungan terperinci Bolehkah MySQL Kemas Kini Berbilang Baris dalam Satu Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!