Heim >Datenbank >MySQL-Tutorial >Wie kann ich trotz Datenmanipulation die letzten N Zeilen in aufsteigender Reihenfolge aus MySQL abrufen?

Wie kann ich trotz Datenmanipulation die letzten N Zeilen in aufsteigender Reihenfolge aus MySQL abrufen?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 09:15:10560Durchsuche

How to Retrieve the Last N Rows in Ascending Order from MySQL Despite Data Manipulation?

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!

Stellungnahme:
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