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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-12-13 16:53:151042Durchsuche

How to Efficiently Retrieve the Last N Rows from MySQL in Ascending Order?

Abrufen der letzten N Zeilen aus MySQL in aufsteigender Reihenfolge

Das Abrufen der letzten N Zeilen aus einer MySQL-Datenbank kann insbesondere eine häufige Aufgabe sein beim Arbeiten mit großen Tischen. Allerdings kann es eine Herausforderung sein, die Ergebnisse in aufsteigender Reihenfolge zu ordnen und gleichzeitig die Integrität der Daten sicherzustellen.

Bedenken Sie die folgende Abfrage:

SELECT 
    *
FROM
    `table`
ORDER BY id DESC
LIMIT 50;

Auf den ersten Blick scheint diese Abfrage eine Auswahl zu treffen die letzten 50 Zeilen. Allerdings geschieht dies in absteigender Reihenfolge (vom größten zum niedrigsten), was gegen die Anforderung einer aufsteigenden Reihenfolge verstößt.

Ein anderer Ansatz ist:

SELECT 
    *
FROM
    `table`
WHERE
    id > ((SELECT 
            MAX(id)
        FROM
            chat) - 50)
ORDER BY id ASC;

Diese Abfrage zielt darauf ab, Zeilen mit IDs abzurufen größer als die maximale ID minus 50. Es schlägt jedoch auch fehl, weil die Daten manipuliert werden können und Zeilen gelöscht werden könnten, was möglicherweise Auswirkungen auf die hat Ergebnisse.

Lösung: Unterabfrage-Ansatz

Um diese Herausforderungen anzugehen, kann eine Unterabfrage eingesetzt werden:

SELECT * FROM
(
 SELECT * FROM table ORDER BY id DESC LIMIT 50
) AS sub
ORDER BY id ASC;

Diese Abfrage beinhaltet eine Unterabfrage, die wählt die letzten 50 Zeilen in absteigender Reihenfolge aus. Die Ergebnisse dieser Unterabfrage werden dann in einer temporären Tabelle namens „sub“ gespeichert. Schließlich wählt die äußere Abfrage alle Zeilen aus „sub“ aus und ordnet sie in aufsteigender Reihenfolge.

Dieser Ansatz stellt sicher, dass die letzten 50 Zeilen ausgewählt werden, auch wenn die Tabelle manipuliert wird, und die Ergebnisse in aufsteigender Reihenfolge dargestellt werden bestellen.

Das obige ist der detaillierte Inhalt vonWie kann ich die letzten N Zeilen in aufsteigender Reihenfolge effizient 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