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
Lepaskan: 2024-12-31 21:19:19
asal
296 orang telah melayarinya

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;
Salin selepas log masuk

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
);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan