2016-05-18 23 views
0

Hier ist der Datensatz:mySQL GROUP, jüngste

Person Status Date Eric 1 1/1/2015 Eric 2 2/1/2015 Eric 3 3/1/2015 John 1 3/1/2015 John 2 2/1/2015 John 1 1/1/2015

Ich mag würde das neueste Datum zu erhalten, und seine korrelierten Status, gruppiert nach Person. Ich habe versucht, mit einer Unterabfrage, zuerst das jüngste Datum zu identifizieren:

SELECT MAX(Date), Person FROM tbl1 GROUP BY Person

Und dann, dass wieder in den Originaltisch kommt, so dass ich von Person wissen, welches Datum der letzten ist. Aber ich habe Schwierigkeiten, den neuesten Status zu identifizieren. Ich sehe den passenden Aggregator einfach nicht. Vielen Dank.

Antwort

2
select tbl1.* 
from tbl1 
join 
(
    SELECT Person, MAX(Date) as m_date 
    FROM tbl1 
    GROUP BY Person 
) tmp on tbl1.Person = tmp.Person 
    and tbl1.date = tmp.m_date 
+0

Vergessen Sie mehrere Join-Kriterien .... niedlich. Ich mag es, danke. –

+0

Ohh Mann, du bist Genie ... Ich habe fast 2 Stunden daran gearbeitet. Sehr deutlich –