Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memadam Rangkaian Baris dalam MySQL tanpa Menggunakan OFFSET dalam Pernyataan DELETE?
Memadam Baris dengan Julat dalam MySQL
Apabila cuba memadam julat baris tertentu daripada jadual menggunakan klausa LIMIT dalam MySQL, ralat boleh berlaku. Untuk menggambarkan, pertanyaan berikut bertujuan untuk memadamkan julat 50 baris, bermula dari baris ke-20 yang disusun mengikut cap masa dalam tertib menurun:
DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;
Walau bagaimanapun, selepas melaksanakan pertanyaan ini, mesej ralat ditemui disebabkan oleh sintaks tidak sah, khususnya pada nilai OFFSET (50).
Penghadan Klausa LIMIT dalam Pernyataan DELETE
Punca ralat terletak pada ketidakupayaan untuk menggunakan OFFSET dalam klausa LIMIT bagi pernyataan DELETE. Ini adalah perbezaan ketara daripada penyataan SELECT, yang membenarkan LIMIT dan OFFSET untuk menentukan titik permulaan dan bilangan baris untuk diambil.
Penyelesaian untuk Pemadaman Julat
Kepada memintas had ini, penyelesaian diperlukan. Dengan menggunakan subkueri yang bersarang dalam pernyataan DELETE, julat baris boleh disasarkan dan dialih keluar dengan tepat. Pendekatan ini melibatkan langkah berikut:
Berikut ialah contoh pertanyaan yang diubah suai menggunakan penyelesaian ini:
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 ini, pertanyaan utama id lajur utama diandaikan, walaupun ia boleh diubah suai kepada nama lajur yang sesuai dalam senario khusus anda.
Atas ialah kandungan terperinci Bagaimana untuk Memadam Rangkaian Baris dalam MySQL tanpa Menggunakan OFFSET dalam Pernyataan DELETE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!