2010-10-06 46 views
0

下面是一個例子表:如何在MySQL數據庫中選擇最新的三種值類型?

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 

所以最後每個「類型」返回的。

我可以完成上述使用三個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語句組合成一個?

任何幫助表示讚賞。

克里斯

+0

你可以將它們組合成一個查詢,但只希望將所有三個查詢相結合的一個更大的版本。你有什麼可能是最好的。 – JoshD 2010-10-06 17:40:09

回答

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

感謝您的輸入!我會嘗試兩個。 – Christopher 2010-10-06 19:43:40