Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memadamkan Bilangan Baris Tertentu dalam Susunan Menurun dalam MySQL dengan Sekatan?

Bagaimana untuk Memadamkan Bilangan Baris Tertentu dalam Susunan Menurun dalam MySQL dengan Sekatan?

DDD
DDDasal
2024-10-28 11:54:41502semak imbas

How to Delete a Specific Number of Rows in Descending Order in MySQL with Restrictions?

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!

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