Abrufen der letzten Zeile für jede Gruppe in MySQL
Zum Sammeln der „letzten“ Zeile jeder Gruppe mithilfe von „Gruppieren nach“ in MySQL , berücksichtigen Sie die folgenden effizienten Ansätze:
Unterabfragemethode:
Eine gemeinsame Der Ansatz verwendet eine Unterabfrage:
select * from foo as a where a.id = (select max(id) from foo where uid = a.uid group by uid) group by uid;
Join-Methode:
Eine Alternative ist die Verwendung eines Joins:
SELECT t1.* FROM foo t1 JOIN (SELECT uid, MAX(id) id FROM foo GROUP BY uid) t2 ON t1.id = t2.id AND t1.uid = t2.uid;
LEFT JOIN-Methode:
Für eine differenziertere Darstellung Ansatz:
SELECT t1.* FROM foo t1 LEFT JOIN foo t2 ON t1.id < t2.id AND t1.uid = t2.uid WHERE t2.id is NULL;
Abfragen vergleichen
Sie können die Effizienz dieser Abfragen mithilfe von EXPLAIN-Anweisungen analysieren.
Tabellenstruktur und Daten :
CREATE TABLE foo ( id INT(10) NOT NULL AUTO_INCREMENT, uid INT(10) NOT NULL, value VARCHAR(50) NOT NULL, PRIMARY KEY (`id`), INDEX `uid` (`uid`) ); id, uid, value 1, 1, hello 2, 2, cheese 3, 2, pickle 4, 1, world
Erwartet Ergebnisse:
id, uid, value 3, 2, pickle 4, 1, world
Das obige ist der detaillierte Inhalt vonWie kann ich die letzte Zeile für jede Gruppe in MySQL effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!