Heim >Datenbank >MySQL-Tutorial >Wie kann ich die letzte Zeile pro Gruppe in MySQL effizient abrufen?

Wie kann ich die letzte Zeile pro Gruppe in MySQL effizient abrufen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-12 15:19:01302Durchsuche

How to Efficiently Retrieve the Last Row per Group in MySQL?

Abrufen der „letzten“ Zeile pro Gruppe mit MySQL

Problem:

Finden Sie eine effizientere Methode zum Abrufen der letzte Zeile für jede Gruppe in einer MySQL-Tabelle mit einer Abfrage ähnlich der folgenden:

select * 
    from foo as a
    where a.id = (select max(id) from foo where uid = a.uid group by uid)
    group by uid;

Mögliche Lösung:

Betrachten Sie diese alternative Abfrage:

SELECT t1.* FROM foo t1
  LEFT JOIN foo t2
    ON t1.id < t2.id AND t1.uid = t2.uid
WHERE t2.id is NULL;

Erklärung:

Diese Abfrage verbindet jede Zeile in der Tabelle mit ihrem Nachfolger basierend auf der ID-Spalte. Wenn kein Nachfolger existiert (d. h. es ist die letzte Zeile in einer Gruppe), ist die Spalte t2.id NULL. Durch die Filterung nach NULL-Werten isolieren wir effektiv die letzten Zeilen jeder Gruppe.

Zusätzliche Hinweise:

Verwenden Sie EXPLAIN, um die Abfrageleistung der ursprünglichen Abfrage und der Alternative zu analysieren Lösung.

Diese Methode ist besonders nützlich für große Datensätze und komplexe Gruppierungen. Für einfachere Fälle können andere Ansätze effizienter sein.

Das obige ist der detaillierte Inhalt vonWie kann ich die letzte Zeile pro Gruppe in MySQL effizient 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