2016-05-27 11 views
0

Ich versuche, die Daten zu mir zu gruppieren, dass sie nur den letzten Datensatz jeder ID wollen, was soll ich tun?MySQL/Sortieren und Gruppieren von Daten nach Datum

In Zugang mein Problem auf diese Weise zu lösen:

SELECT Table1.id, Last(Table1.status) AS LastStatus, Last(Table1.date) AS LastDate 
FROM Table1 
GROUP BY Tabele1.id; 

Mein Tisch

____________________________ 
| ID | STATUS | DATE | 
|123456| 1 | 15/04/2016 | 
|123456| 2 | 16/04/2016 | 
|123456| 3 | 17/04/2016 | 
|123456| 1 | 18/04/2016 | 
|654321| 3 | 19/04/2016 | 
|654321| 4 | 20/04/2016 | 
|654321| 2 | 21/04/2016 | 
|98765 | 3 | 22/04/2016 | 
|98765 | 1 | 23/04/2016 | 
|98765 | 2 | 24/04/2016 | 
|98765 | 3 | 25/04/2016 | 
------------------------------ 

Das gewünschte Ergebnis ist der letzte Datensatz jeder ID.

____________________________ 
| ID | STATUS | DATE | 
|123456| 1 | 18/04/2016 | 
|654321| 2 | 21/04/2016 | 
|98765 | 3 | 25/04/2016 | 
------------------------------ 
+0

'wählen max (Datum) zurückkehren ... Gruppe nach ID, Status? –

Antwort

0

Sie können ein, wo mit einer Unterabfrage verwenden, die thx max Termin für die id

select * from my_table 
where (id, date) in ( select id, max(date) 
         from my_table 
         group by id ) 
order by date 

oder wenn Sie brauchen, um nach Status

select * from my_table 
where (id, date) in ( select id, max(date) 
         from my_table 
         group by id ) 
order by status 
+0

Es funktioniert, aber hat sonst keine Unterabfrage? (Danke für Ihre Hilfe). –

+0

Ich weiß auf diese Weise .. warum Sie nicht wie Unterabfrage .. Sie brauchen eine Teilmenge für den Abgleich der max (Datum) und das ist der einfachste Weg .. – scaisEdge

+0

Ich mag Unterabfragen, das Problem ist, dass ich genug Unterabfragen verwenden werde. –

Verwandte Themen