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中文網其他相關文章!