Rumah  >  Artikel  >  pangkalan data  >  Bagaimana Untuk Memadam Semua Catatan Kecuali 15 Terkini dalam MySQL Tanpa Sokongan Subquery 'LIMIT & IN'?

Bagaimana Untuk Memadam Semua Catatan Kecuali 15 Terkini dalam MySQL Tanpa Sokongan Subquery 'LIMIT & IN'?

Linda Hamilton
Linda Hamiltonasal
2024-11-11 15:44:03195semak imbas

How to Delete All Posts Except the Latest 15 in MySQL Without 'LIMIT & IN' Subquery Support?

Had Subkueri MySQL: Memadam Catatan Tidak Termasuk 15 Terkini

Dalam bidang pengoptimuman pangkalan data, selalunya perlu mengalih keluar data yang berlebihan atau ketinggalan zaman. Soalan ini meneroka cara untuk memadam semua catatan kecuali 15 yang terkini menggunakan subkueri MySQL.

Pertanyaan asal:

DELETE FROM posts WHERE id NOT IN
(SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15)

Walau bagaimanapun, pertanyaan ini menghadapi ralat kerana kekurangan sokongan MySQL untuk Subquery 'HAD & DALAM/SEMUA/SEBARANG/SEMANGAT' dalam versi terdahulunya. Untuk menangani isu ini, pertanyaan yang diubah suai boleh digunakan:

DELETE
FROM posts
WHERE id NOT IN (
      SELECT * FROM (
            SELECT id
            FROM posts
            ORDER BY timestamp DESC
            LIMIT 0, 15
      ) 
      AS t);

Dalam pertanyaan yang diubah suai ini, subkueri tambahan diperkenalkan sebagai jadual terbitan menggunakan alias 't'. Jadual terbitan ini mengandungi ID bagi 15 siaran terkini, diisih mengikut tertib menurun berdasarkan cap masanya. Pertanyaan utama kemudiannya menggunakan jadual terbitan ini untuk mengecualikan ID khusus tersebut semasa memadamkan siaran.

Dengan menggunakan penyelesaian ini, adalah mungkin untuk mencapai hasil yang diingini untuk memadamkan semua siaran kecuali 15 yang paling terkini dalam versi MySQL yang tidak' t menyokong 'HAD & DALAM/SEMUA/ MANA-MANA/SATU' subkueri. Pendekatan yang disemak ini berkesan mengalih keluar siaran usang sambil mengekalkan yang terkini untuk rujukan selanjutnya.

Atas ialah kandungan terperinci Bagaimana Untuk Memadam Semua Catatan Kecuali 15 Terkini dalam MySQL Tanpa Sokongan Subquery 'LIMIT & IN'?. 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