Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie lösche ich alle Beiträge außer den neuesten 15 in MySQL ohne Unterabfrageunterstützung „LIMIT & IN'?

Linda Hamilton
Freigeben: 2024-11-11 15:44:03
Original
194 Leute haben es durchsucht

How to Delete All Posts Except the Latest 15 in MySQL Without 'LIMIT & IN' Subquery Support?

MySQL-Unterabfragelimit: Löschen von Beiträgen mit Ausnahme der neuesten 15

Im Bereich der Datenbankoptimierung ist es oft notwendig, redundante oder veraltete Daten zu entfernen. In dieser Frage wird untersucht, wie mithilfe einer MySQL-Unterabfrage alle Beiträge außer den letzten 15 gelöscht werden.

Die ursprüngliche Abfrage:

DELETE FROM posts WHERE id NOT IN
(SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15)
Nach dem Login kopieren

Bei dieser Abfrage tritt jedoch ein Fehler auf, da MySQL keine Unterstützung dafür bietet „LIMIT & IN/ALL/ANY/SOME“-Unterabfragen in früheren Versionen. Um dieses Problem zu beheben, kann eine modifizierte Abfrage verwendet werden:

DELETE
FROM posts
WHERE id NOT IN (
      SELECT * FROM (
            SELECT id
            FROM posts
            ORDER BY timestamp DESC
            LIMIT 0, 15
      ) 
      AS t);
Nach dem Login kopieren

In dieser modifizierten Abfrage wird eine zusätzliche Unterabfrage als abgeleitete Tabelle mit dem Alias ​​„t“ eingeführt. Diese abgeleitete Tabelle enthält die IDs der letzten 15 Beiträge, sortiert in absteigender Reihenfolge basierend auf ihrem Zeitstempel. Die Hauptabfrage verwendet dann diese abgeleitete Tabelle, um diese spezifischen IDs beim Löschen von Beiträgen auszuschließen.

Mit dieser Problemumgehung ist es möglich, das gewünschte Ergebnis zu erzielen, nämlich das Löschen aller Beiträge mit Ausnahme der neuesten 15 in MySQL-Versionen, die dies nicht tun. Die Unterabfragen „LIMIT & IN/ALL/ANY/SOME“ werden nicht unterstützt. Dieser überarbeitete Ansatz entfernt effektiv veraltete Beiträge und behält gleichzeitig die neuesten zur späteren Bezugnahme bei.

Das obige ist der detaillierte Inhalt vonWie lösche ich alle Beiträge außer den neuesten 15 in MySQL ohne Unterabfrageunterstützung „LIMIT & IN'?. 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