Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memadam Semua Tetapi N Rekod Terkini dalam MySQL?
Bagaimana untuk memadam semua rekod kecuali rekod N terkini dalam SQL
Ini adalah masalah biasa: jadual anda penuh dengan rekod, tetapi anda hanya mahu menyimpan rekod N terkini dan memadamkan selebihnya. Walaupun pertanyaan yang anda tanya menunjukkan niat, ia gagal mencapai tujuannya kerana keterbatasan MySQL.
Jangan risau, penyelesaian ada! Pertanyaan berikut akan mencapai hasil yang anda inginkan:
<code class="language-sql">DELETE FROM `table` WHERE id NOT IN ( SELECT id FROM ( SELECT id FROM `table` ORDER BY id DESC LIMIT N -- 保留最新的N条记录 ) foo );</code>
Penguraian pertanyaan:
Sekatan dipintas:
Arahan pengoptimuman:
Bergantung pada kes penggunaan anda, anda mungkin mendapati pertanyaan dioptimumkan berikut lebih sesuai:
<code class="language-sql">DELETE FROM `table` ORDER BY id DESC LIMIT ROWS COUNT() - N -- 只保留最新的N条记录</code>
Jika ia memenuhi keperluan anda, pertimbangkan pengoptimuman ini kerana ia boleh meningkatkan prestasi dengan ketara.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memadam Semua Tetapi N Rekod Terkini dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!