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

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

Linda Hamilton
Freigeben: 2025-01-08 16:11:42
Original
826 Leute haben es durchsucht

How to Delete All But the Latest N Records in a MySQL Table Using SQL?

Ältere MySQL-Einträge effizient entfernen: Nur die neuesten N behalten

MySQL unterstützt das Löschen von Datensätzen mit einer LIMIT-Klausel in einer Unterabfrage nicht direkt. Für eine saubere Lösung können wir dies jedoch mithilfe verschachtelter Unterabfragen erreichen.

Angenommen, Sie müssen alle bis auf die aktuellsten N Einträge entfernen, sortiert nach der Spalte id (absteigend). Dieser Ansatz vermeidet die häufige Gefahr, LIMIT direkt in der DELETE-Anweisung zu verwenden:

Die folgende Abfrage erreicht dies effektiv:

<code class="language-sql">DELETE FROM `table`
WHERE id NOT IN (
  SELECT id
  FROM (
    SELECT id
    FROM `table`
    ORDER BY id DESC
    LIMIT N
  ) as latest_records
);</code>
Nach dem Login kopieren

Diese Abfrage nutzt eine Unterabfrage (latest_records), um die IDs der N neuesten Datensätze zu identifizieren. Die äußere DELETE-Anweisung entfernt dann alle Zeilen, deren IDs nicht in diesem Satz enthalten sind.

Denken Sie daran, dass die Leistung abhängig von Ihrer spezifischen Tabellenstruktur und Ihrem Datenvolumen weiter optimiert werden kann. Erwägen Sie das Hinzufügen von Indizes zur Spalte id, um erhebliche Leistungsverbesserungen zu erzielen.

Das obige ist der detaillierte Inhalt vonWie lösche ich mit SQL 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage