Rumah  >  Artikel  >  pangkalan data  >  **Mengapa MySQL DELETE dengan LIMIT dan Offset Menyebabkan Ralat?**

**Mengapa MySQL DELETE dengan LIMIT dan Offset Menyebabkan Ralat?**

Susan Sarandon
Susan Sarandonasal
2024-10-25 11:21:02211semak imbas

**Why does MySQL DELETE with LIMIT and Offset Cause an Error?**

Ralat Ditemui Semasa Menggunakan MySQL DELETE Statement dengan LIMIT

Masalah:

Apabila cuba untuk padam baris daripada jadual menggunakan pernyataan MySQL DELETE dengan klausa LIMIT, ralat ditemui pada nilai offset dalam klausa LIMIT. Pertanyaan berikut menunjukkan isu:

DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;

Mesej ralat yang diterima pada nilai offset (50) ialah:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 50' at line 1

Penyelesaian:

Ralat berlaku kerana MySQL tidak membenarkan menyatakan offset dalam klausa LIMIT bagi pernyataan DELETE. Akibatnya, kita mesti menggunakan pendekatan alternatif untuk mencapai hasil yang diingini.

Untuk memadamkan baris tertentu daripada jadual berdasarkan julat, kita boleh menggunakan subkueri yang bersarang dalam pertanyaan DELETE utama. Pertanyaan yang diubah suai berikut menunjukkan teknik ini:

<code class="sql">DELETE FROM `chat_messages` 
WHERE `id` IN (
    SELECT `id` FROM (
        SELECT `id` FROM `chat_messages`
        ORDER BY `timestamp` DESC
        LIMIT 20, 50
    ) AS `x`
)</code>

Dalam pertanyaan ini, subkueri dalam klausa IN mendapatkan semula ID baris yang akan dipadamkan berdasarkan julat yang ditentukan. Dengan mengandaikan jadual mempunyai lajur kunci utama bernama id, kita boleh menggunakannya untuk mengenal pasti setiap baris secara unik.

Nota: Adalah penting untuk melaksanakan sarang berganda untuk mengelakkan masalah dengan ketidakupayaan MySQL untuk memilih daripada jadual yang diubah suai pada masa ini.

Atas ialah kandungan terperinci **Mengapa MySQL DELETE dengan LIMIT dan Offset Menyebabkan Ralat?**. 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