Rumah >pangkalan data >tutorial mysql >Mengapa Pernyataan `KEMASKINI` MySQL Tidak Menyokong Klausa `LIMIT` Dua Bahagian?

Mengapa Pernyataan `KEMASKINI` MySQL Tidak Menyokong Klausa `LIMIT` Dua Bahagian?

Susan Sarandon
Susan Sarandonasal
2024-12-31 21:19:19322semak imbas

Why Doesn't MySQL's `UPDATE` Statement Support a Two-Part `LIMIT` Clause?

MySQL: Kesukaran dengan LIMIT dalam Kemas Kini Berbilang Baris

Dalam MySQL, cuba mengemas kini berbilang baris menggunakan klausa LIMIT boleh menghadapi ralat. 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 berdasarkan syarat yang disediakan, melangkau lima baris pertama (LIMIT 5, 5). Walau bagaimanapun, ini mengakibatkan ralat.

Versi pertanyaan yang berfungsi tanpa klausa LIMIT kedua (LIMIT 5) berjaya mengemas kini lima baris pertama yang memenuhi syarat. Ralat berlaku kerana MySQL tidak membenarkan menyatakan LIMIT kedua dalam pernyataan kemas kini.

Alternatif Disyorkan

Untuk mengatasi had ini, penyelesaian disyorkan:

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
);

Pertanyaan ini mencapai hasil yang sama dengan terlebih dahulu mengenal pasti baris yang dikehendaki menggunakan subkueri dan kemudian mengemas kini baris yang sesuai berdasarkan medan id. Kaedah ini membolehkan pemilihan baris yang tepat dan pengemaskinian dalam MySQL.

Atas ialah kandungan terperinci Mengapa Pernyataan `KEMASKINI` MySQL Tidak Menyokong Klausa `LIMIT` Dua Bahagian?. 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