MySQL: Menggunakan LIMIT untuk Kemas Kini Berbilang Baris
Dalam MySQL, klausa LIMIT membenarkan anda mengehadkan bilangan baris yang dipengaruhi oleh pertanyaan . Walau bagaimanapun, apabila menggunakan LIMIT dengan pernyataan UPDATE, ralat biasa timbul apabila cuba mengemas kini julat baris tertentu.
Pertimbangkan pertanyaan berikut:
UPDATE messages SET test_read=1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5, 5;
Pertanyaan ini bertujuan untuk mengemas kini lima baris, bermula dari baris kelima, dalam jadual "mesej" dengan "userid" bersamaan dengan "xyz". Walau bagaimanapun, pertanyaan ini akan mengakibatkan ralat.
Untuk memahami sebabnya, adalah penting untuk ambil perhatian bahawa klausa LIMIT dalam konteks ini mentakrifkan offset dan bilangan baris maksimum. Dalam contoh ini, ia mendapatkan semula dan mengehadkan bilangan baris yang dipaparkan dan bukannya mengemas kininya. Untuk mengemas kini julat baris tertentu, subkueri boleh digunakan sebaliknya:
UPDATE messages SET test_read=1 WHERE id IN ( SELECT id FROM ( SELECT id FROM messages ORDER BY date_added DESC LIMIT 5, 5 ) tmp );
Dalam pertanyaan yang diubah suai ini, subkueri digunakan untuk memilih ID bagi lima baris yang perlu dikemas kini. Kenyataan UPDATE utama kemudiannya sepadan dengan ID ini dan melaksanakan kemas kini. Ini memastikan bahawa hanya baris yang dikehendaki diubah suai.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Julat Baris Tertentu dalam MySQL Menggunakan LIMIT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!