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中文网其他相关文章!