Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadamkan Bilangan Baris Tertentu dalam Susunan Menurun dalam MySQL dengan Sekatan?
Memadam Baris dengan Sekatan dalam MySQL
Soalan ini meneroka penggunaan pernyataan DELETE dengan klausa LIMIT dalam MySQL. Pengguna cuba memadamkan bilangan baris yang ditentukan dalam tertib menurun mengikut lajur cap masa. Walau bagaimanapun, pertanyaan gagal dengan ralat sintaks.
Ralat timbul kerana MySQL tidak membenarkan offset dalam klausa LIMIT bagi pernyataan DELETE. Akibatnya, pertanyaan tidak boleh dilaksanakan seperti yang dimaksudkan.
Untuk menyelesaikan isu ini, pertanyaan boleh ditulis semula menggunakan pendekatan yang berbeza. Pertanyaan yang ditulis semula menggunakan subkueri bersarang untuk memilih baris yang hendak dipadamkan berdasarkan julat yang diingini.
DELETE FROM `chat_messages` WHERE `id` IN ( SELECT `id` FROM ( SELECT `id` FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50 ) AS `x` )
Dalam pertanyaan yang diubah suai ini, subkueri bersarang memilih nilai id bagi baris yang hendak dipadamkan. Klausa LIMIT digunakan pada subkueri paling dalam untuk mengehadkan set hasil.
Memandangkan MySQL melarang memilih daripada jadual yang diubah suai pada masa ini, pertanyaan menggunakan sarang berganda untuk mengatasi had ini. Subquery luar berfungsi sebagai jadual sementara, membenarkan subquery paling dalam memilih nilai id daripada set hasil yang berasingan.
Dengan melaksanakan teknik ini, pertanyaan boleh berjaya memadamkan baris dalam julat yang ditentukan sambil mematuhi keperluan sintaks MySQL .
Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Bilangan Baris Tertentu dalam Susunan Menurun dalam MySQL dengan Sekatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!