Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengemas kini Julat Baris Tertentu dalam MySQL Menggunakan LIMIT?

Bagaimana untuk Mengemas kini Julat Baris Tertentu dalam MySQL Menggunakan LIMIT?

Patricia Arquette
Patricia Arquetteasal
2024-12-31 12:03:08392semak imbas

How to Correctly Update a Specific Range of Rows in MySQL Using LIMIT?

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!

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