Heim >Datenbank >MySQL-Tutorial >Wie wähle ich zuverlässig die letzten N Zeilen in aufsteigender Reihenfolge aus einer MySQL-Tabelle aus?

Wie wähle ich zuverlässig die letzten N Zeilen in aufsteigender Reihenfolge aus einer MySQL-Tabelle aus?

Barbara Streisand
Barbara StreisandOriginal
2024-12-04 02:29:12496Durchsuche

How to Reliably Select the Last N Rows in Ascending Order from a MySQL Table?

Auswählen der letzten N Zeilen aus MySQL

Das Auswählen der letzten N Zeilen aus einer MySQL-Datenbank kann mit verschiedenen Methoden eine unkomplizierte Aufgabe sein. Beim Umgang mit aufsteigend sortierten Primärschlüsselspalten können herkömmliche Ansätze jedoch auf Einschränkungen stoßen. Ziel dieses Artikels ist es, eine zuverlässige Lösung für dieses Problem bereitzustellen und die Manipulation und Löschung von Datensätzen innerhalb der Tabelle zu ermöglichen.

Das Problem:

Das ursprüngliche Ziel ist das Abrufen Die letzten 50 Zeilen einer Tabelle, sortiert in aufsteigender Reihenfolge basierend auf der Primärschlüsselspalten-ID. Der erste Versuch zeigte jedoch zwei Schwächen:

  1. Das Sortieren der Zeilen in absteigender Reihenfolge mit ORDER BY id DESC behält nicht die gewünschte ASC-Reihenfolge bei, wenn LIMIT 50 verwendet wird.
  2. Abfragen, die darauf basieren Subtrahieren eines festen Werts von der maximalen ID (z. B. id > (SELECT MAX(id) FROM chat) - 50) werden unzuverlässig, wenn Zeilen manipuliert werden.

Die Lösung:

Um diese Herausforderungen zu meistern, verwendet ein robusterer Ansatz eine Unterabfrage:

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

Erklärung:

  • Die Unterabfrage ((SELECT * FROM table ORDER BY id DESC LIMIT 50)) ruft die letzten 50 Zeilen aus der Tabelle ab und behält dabei die absteigende Reihenfolge bei.
  • Die äußere Abfrage (SELECT * FROM ...) umschließt die Unterabfrage und führt eine neue ORDER BY-Klausel ein, die die vorherige Sortierung überschreibt und die Zeilen basierend auf aufsteigend neu anordnet id.

Dieser Ansatz geht effektiv auf die Einschränkungen ein, die bei herkömmlichen Methoden auftreten. Es ermöglicht:

  • Abruf der letzten N Zeilen in ASC-Reihenfolge, unabhängig von Manipulationen oder Löschungen.
  • Verarbeitung von Änderungen an der Tabelle, wie etwa das Hinzufügen oder Entfernen von Zeilen , ohne die Genauigkeit der Abfrage zu beeinträchtigen.

Das obige ist der detaillierte Inhalt vonWie wähle ich zuverlässig die letzten N Zeilen in aufsteigender Reihenfolge aus einer MySQL-Tabelle aus?. 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