So löschen Sie alle Datensätze außer den neuesten N-Datensätzen in SQL
Dies ist ein häufiges Problem: Ihre Tabelle ist voller Datensätze, Sie möchten jedoch nur die neuesten N Datensätze behalten und den Rest löschen. Die von Ihnen gestellte Abfrage zeigt zwar die Absicht, erreicht ihren Zweck jedoch aufgrund von Einschränkungen von MySQL nicht.
Keine Sorge, es gibt Lösungen! Die folgende Abfrage führt zu den gewünschten Ergebnissen:
<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>
Abfragezerlegung:
Einschränkungen umgangen:
Optimierungsanleitung:
Abhängig von Ihrem Anwendungsfall finden Sie möglicherweise die folgende optimierte Abfrage besser geeignet:
<code class="language-sql">DELETE FROM `table` ORDER BY id DESC LIMIT ROWS COUNT() - N -- 只保留最新的N条记录</code>
Wenn es Ihren Anforderungen entspricht, sollten Sie diese Optimierung in Betracht ziehen, da sie die Leistung erheblich verbessern kann.
Das obige ist der detaillierte Inhalt vonWie kann ich alle bis auf die N neuesten Datensätze in MySQL löschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!