Heim >Datenbank >MySQL-Tutorial >Wie kann ich trotz Datenmanipulation die letzten N Zeilen in aufsteigender Reihenfolge aus MySQL abrufen?
Die letzten N Zeilen in MySQL in aufsteigender Reihenfolge mit manipulierten Daten abrufen
Das Auswählen der letzten N Zeilen aus einer MySQL-Datenbank ist ein häufiger Vorgang. Allerdings kann es schwierig sein, die Reihenfolge anzugeben, in der die Zeilen zurückgegeben werden sollen, wenn die Daten manipuliert werden.
Stellen Sie sich das folgende Szenario vor: Sie möchten die letzten 50 Zeilen aus einer Tabelle mit dem Namen „table“ auswählen die Spalte „id“, die der Primärschlüssel ist. Das Sortieren der Zeilen in aufsteigender Reihenfolge nach „id“ ist eine wesentliche Voraussetzung.
Fehlgeschlagene Versuche
Die folgende Abfrage versucht, die Ergebnisse in absteigender Reihenfolge zu sortieren, schlägt jedoch fehl um die letzten 50 Zeilen zurückzugeben:
SELECT * FROM `table` ORDER BY id DESC LIMIT 50;
Alternativ versucht diese Abfrage, die letzten 50 zu identifizieren Zeilen durch Vergleichen der „id“-Werte mit dem maximalen „id“-Wert minus 50, aber es funktioniert nicht, wenn Zeilen gelöscht wurden:
SELECT * FROM `table` WHERE id > ((SELECT MAX(id) FROM chat) - 50) ORDER BY id ASC;
Die Lösung
Um dieses Problem zu beheben, können Sie eine Unterabfrage verwenden, um das gewünschte Ergebnis zu erzielen:
SELECT * FROM ( SELECT * FROM table ORDER BY id DESC LIMIT 50 ) AS sub ORDER BY id ASC;
Diese Abfrage führt zuerst die Unterabfrage aus, die wählt die letzten 50 Zeilen aus „Tabelle“ aus und ordnet sie in absteigender Reihenfolge. Die resultierende Unterabfrage erhält dann den Alias „sub“.
Schließlich wählt die äußere Abfrage alle Zeilen aus der „sub“-Unterabfrage aus und ordnet sie in aufsteigender Reihenfolge. Dadurch werden effektiv die letzten 50 Zeilen aus der Tabelle abgerufen, sichergestellt, dass sie in aufsteigender Reihenfolge basierend auf der Spalte „id“ sortiert werden, und der Fall behandelt, in dem Zeilen möglicherweise manipuliert wurden.
Das obige ist der detaillierte Inhalt vonWie kann ich trotz Datenmanipulation die letzten N Zeilen in aufsteigender Reihenfolge aus MySQL abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!