如何在MySQL数据库中选择最新的三种值类型?

时间:2010-10-06 17:36:17

标签: mysql select

以下是一个示例表:

ID  time   data   type  
0   0100   xyz    0  
1   0200   xyz    1  
2   0300   xyz    1  
3   0400   xyz    2  
4   0200   xyz    0  
5   0500   xyz    2  
6   0300   xyz    0  

根据时间戳添加数据,以便每种类型的最后一个都有最新的时间戳。

我希望SELECT的结果是:

ID  time   data   type  
5   0500   xyz    2  
2   0300   xyz    1  
6   0300   xyz    0  

所以返回每个'type'的最后一个。

我可以使用三个SELECT语句完成上述操作,如下所示:

SELECT time, data, type FROM table WHERE type=0 ORDER BY time DESC LIMIT 1
SELECT time, data, type FROM table WHERE type=1 ORDER BY time DESC LIMIT 1
SELECT time, data, type FROM table WHERE type=2 ORDER BY time DESC LIMIT 1

有没有办法将上述三个SELECT语句合并为一个?

任何帮助表示感谢。

克里斯

1 个答案:

答案 0 :(得分:1)

select m.ID, m.time, m.data, m.type
from (
    select type, max(time) as MaxTime
    from MyTable
    group by type
) mm
inner join MyTable on mm.type = m.type 
    and mm.MaxTime = m.time