Kemas kini Berbilang Baris dengan LIMIT dalam MySQL
Anda sedang cuba mengemas kini bilangan baris tertentu menggunakan klausa LIMIT dalam pertanyaan MySQL, tetapi menghadapi kesilapan. Mari kita fahami mengapa pertanyaan awal anda mungkin gagal dan cara membetulkannya.
UPDATE messages set test_read =1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5, 5 ;
Pertanyaan di atas tidak sah kerana LIMIT menjangkakan integer positif mewakili offset dari permulaan set hasil, dan kemudian bilangan baris yang perlu dikemas kini. Dalam pertanyaan anda, anda telah menetapkan kedua-dua ofset (5) dan had (5), yang tidak betul.
Untuk mengemas kini bilangan baris tertentu bermula daripada offset, anda boleh menggunakan subquery untuk memilih baris untuk dikemas kini dan kemudian mengemas kininya. Berikut ialah pertanyaan yang disemak:
UPDATE messages SET test_read=1 WHERE id IN ( SELECT id FROM ( SELECT id FROM messages ORDER BY date_added DESC LIMIT 5 ) tmp );
Dalam pertanyaan ini, subkueri digunakan untuk memilih ID baris yang akan dikemas kini, bermula dari baris ke-5 dalam tertib menurun bagi lajur date_added. Pertanyaan utama kemudiannya menggunakan klausa IN untuk mengemas kini baris khusus ini sahaja.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Bilangan Baris Tertentu dalam MySQL Menggunakan LIMIT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!