2016-05-27 5 views
0

Я пытаюсь сгруппировать данные, чтобы они просто хотели, чтобы последняя запись каждого идентификатора, что мне делать?MySQL/Сортировка и группировка данных по дате

В доступе, чтобы решить мою проблему таким образом:

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

Мой стол

____________________________ 
| 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 | 
------------------------------ 

Нужный результат последняя запись каждого ID.

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

'выбрать макс (дата) ... group by id, status'? –

ответ

0

Вы можете использовать где в подзапросом, возвращающие THx дату макс для идентификатора

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

или если вам нужен заказ по статусу

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

Он работает, но в противном случае нет подзапроса? (Спасибо за помощь). –

+0

Я знаю этот путь .. почему вам не нравится подзапрос .. вам нужно подмножество для соответствия max (date), и это самый простой способ. – scaisEdge

+0

Мне нравятся подзапросы, проблема в том, что я буду использовать достаточно подзапросов. –

Смежные вопросы