SQL で最新の N レコードを除くすべてのレコードを削除する方法
これはよくある問題です。テーブルはレコードでいっぱいですが、最新の N レコードだけを保持し、残りは削除したいと考えています。質問したクエリは意図を示していますが、MySQL の制限によりその目的を達成できません。
心配しないでください。解決策は存在します。次のクエリにより、目的の結果が得られます:
<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>
クエリ分解:
バイパスされた制限:
最適化手順:
使用例によっては、次の最適化されたクエリの方が適している場合があります:
<code class="language-sql">DELETE FROM `table` ORDER BY id DESC LIMIT ROWS COUNT() - N -- 只保留最新的N条记录</code>
要件を満たしている場合は、パフォーマンスを大幅に向上させることができるため、この最適化を検討してください。
以上がMySQL の最新の N レコードを除くすべてを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。