Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Kemas Kini Berbilang Baris MySQL dengan Offset Menggunakan LIMIT dan ORDER BY?

Bagaimanakah Saya Boleh Kemas Kini Berbilang Baris MySQL dengan Offset Menggunakan LIMIT dan ORDER BY?

Barbara Streisand
Lepaskan: 2025-01-01 02:11:11
asal
639 orang telah melayarinya

How Can I Update Multiple MySQL Rows with an Offset Using LIMIT and ORDER BY?

Mengemas kini Berbilang Baris Menggunakan LIMIT dalam MySQL

Apabila cuba mengemas kini set baris menggunakan klausa LIMIT, pembangun mungkin menghadapi ralat jika pertanyaan tidak berstruktur dengan betul. Artikel ini meneroka isu sedemikian dan menyediakan penyelesaian alternatif.

Pertanyaan dan Ralat Asal:

Pertimbangkan pertanyaan SQL berikut:

UPDATE messages SET test_read = 1
WHERE userid='xyz'
ORDER BY date_added DESC
LIMIT 5, 5;
Salin selepas log masuk

Pertanyaan ini cuba mengemas kini 5 baris bermula dari baris ke-6 dalam tertib menurun bagi lajur date_added. Walau bagaimanapun, MySQL akan melaporkan ralat dengan operasi ini.

Sebab Ralat:

Ralat berlaku kerana klausa LIMIT tidak boleh digunakan bersama dengan klausa ORDER BY apabila cuba mengemas kini berbilang baris. Klausa LIMIT mengehadkan bilangan baris untuk dikembalikan, manakala klausa ORDER BY menentukan susunan baris dipilih.

Penyelesaian Alternatif:

Untuk mengemas kini berbilang baris menggunakan pendekatan seperti LIMIT, anda boleh menggunakan penyelesaian berikut:

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

Ini pertanyaan mula-mula melaksanakan subkueri untuk memilih ID baris untuk dikemas kini. Kemudian, pertanyaan utama menggunakan ID ini untuk menapis baris yang akan menerima kemas kini.

Penjelasan Penyelesaian:

Subkueri bersarang memilih ID daripada 5 baris bermula dari baris ke-6 dalam susunan menurun bagi lajur date_added. Pertanyaan luar kemudian menggunakan ID ini untuk mengenal pasti dan mengemas kini baris yang sepadan.

Kesimpulan:

Walaupun klausa LIMIT tidak boleh digunakan terus untuk mengemas kini berbilang baris menggunakan ORDER BY klausa, penyelesaian alternatif yang disediakan dalam artikel ini membolehkan pembangun mencapai hasil yang diinginkan. Dengan menggunakan pendekatan ini, pembangun boleh menentukan titik permulaan dan bilangan baris yang akan dikemas kini, memastikan operasi menyasarkan baris yang dimaksudkan dengan tepat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Kemas Kini Berbilang Baris MySQL dengan Offset Menggunakan LIMIT dan ORDER BY?. 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