Heim > Datenbank > MySQL-Tutorial > Wie lösche ich alle bis auf die neuesten N Datensätze in einer MySQL-Tabelle?

Wie lösche ich alle bis auf die neuesten N Datensätze in einer MySQL-Tabelle?

DDD
Freigeben: 2025-01-08 16:21:42
Original
882 Leute haben es durchsucht

How to Delete All but the Latest N Records in a MySQL Table?

Ältere MySQL-Einträge effizient entfernen und nur die neuesten N behalten

Das Löschen aller bis auf die neuesten N Einträge in einer MySQL-Tabelle erfordert eine sorgfältige Abfragekonstruktion. Ein direkter Ansatz mit LIMIT innerhalb einer DELETE-Anweisung ist aufgrund der Einschränkungen von MySQL oft erfolglos.

Ein häufiger fehlerhafter Versuch sieht so aus:

<code class="language-sql">DELETE FROM `table`
ORDER BY `id` ASC
LIMIT ((SELECT COUNT(*) FROM `table`) - N);</code>
Nach dem Login kopieren

Dies schlägt fehl, da MySQL keine Unterabfragen direkt innerhalb der LIMIT-Klausel zulässt.

Eine robuste Lösung verwendet eine verschachtelte Unterabfrage:

<code class="language-sql">DELETE FROM `table`
WHERE `id` NOT IN (
  SELECT `id`
  FROM (
    SELECT `id`
    FROM `table`
    ORDER BY `id` DESC
    LIMIT 42 -- Replace 42 with your desired N
  ) AS `subquery`
);</code>
Nach dem Login kopieren

Diese Methode wählt zunächst mithilfe einer inneren Unterabfrage die IDs der N neuesten Datensätze (in id absteigender Reihenfolge) aus. Die äußere Abfrage löscht dann alle Datensätze, deren IDs nicht in dieser inneren Auswahl vorhanden sind. Dadurch bleiben effektiv nur die neuesten N Einträge erhalten.

Denken Sie daran, 42 durch den gewünschten Wert von N zu ersetzen. Für eine optimale Leistung bei großen Datensätzen sind möglicherweise weitere Optimierungstechniken erforderlich. Entdecken Sie alternative Ansätze und erwägen Sie die Indizierung Ihrer id-Spalte, um die Geschwindigkeit deutlich zu verbessern. Konsultieren Sie zusätzliche Ressourcen für erweiterte Lösungen, die auf spezifische Leistungsanforderungen zugeschnitten sind.

Das obige ist der detaillierte Inhalt vonWie lösche ich alle bis auf die neuesten N Datensätze in einer MySQL-Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage