MySQL /按日期对数据进行排序和分组

时间:2016-05-27 19:32:18

标签: mysql

我正在尝试将数据分组给我,他们只想要每个ID的最后一条记录,我该怎么办?

在访问中以这种方式解决我的问题:

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

1 个答案:

答案 0 :(得分:0)

您可以在子查询中使用where in,返回id

的最大日期
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