MySQL-Unterabfrage mit LIMIT-Einschränkung
In MySQL kann der Versuch, eine LIMIT-Klausel in einer Unterabfrage zu verwenden, die den IN-Operator verwendet, einen Fehler auslösen Meldung, dass MySQL diese Funktionalität nicht unterstützt. Dieser Artikel bietet eine Lösung für dieses Problem und ermöglicht Ihnen das Löschen von Zeilen aus einer Tabelle basierend auf einer bestimmten Bedingung in Bezug auf die letzten 15 Datensätze in der Tabelle.
Um das gewünschte Ergebnis zu erzielen, können Sie die folgende Abfrage verwenden Struktur:
DELETE FROM posts WHERE id not in ( SELECT * FROM ( SELECT id FROM posts ORDER BY timestamp desc limit 0, 15 ) as t);
Die äußere DELETE-Anweisung zielt auf die Posts-Tabelle zum Löschen von Zeilen ab. Der IN-Operator wird verwendet, um die Zeilen zu identifizieren, die beibehalten werden sollen, also diejenigen, die im Ergebnis der Unterabfrage gefunden werden.
Die Unterabfrage wählt das ID-Feld aus der Beitragstabelle aus, ordnet die Ergebnisse in absteigender Reihenfolge nach Zeitstempel und wendet eine LIMIT-Klausel an, um die obersten 15 Datensätze abzurufen. Durch die Verwendung des Alias t erstellt die Unterabfrage eine temporäre Tabelle für eine effiziente Verarbeitung.
Diese Problemumgehung beseitigt effektiv die MySQL-Einschränkung und ermöglicht Ihnen, den beabsichtigten Vorgang des Löschens aller Beiträge durchzuführen, die nicht in die letzten 15 fallen Aufzeichnungen.
Das obige ist der detaillierte Inhalt vonWie lösche ich Zeilen in MySQL basierend auf den neuesten 15 Datensätzen mithilfe von LIMIT in einer Unterabfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!