2011-03-21 66 views
0

我有一個簡單的問題;一個我認爲會有一個簡單的解決方案。想象一下這樣的表格:MySQL獲取具有不同值的數據集

Name   Timestamp    Data 
Bob   2011-01-01 01:00:00 Hi 
Alice   2011-02-02 02:00:00 Hello 
Alice   2011-03-03 03:00:00 Hello 
Bob   2011-04-04 04:00:00 Bye 
Charlie  2011-05-05 05:00:00 Cheese 
Charlie  2011-06-06 06:00:00 Toast 

我想要的是能夠運行顯示每個名稱的最新條目的查詢。因此,對於上表,我想這樣的輸出:

Name   Timestamp    Data 
Bob   2011-04-04 04:00:00 Bye 
Alice   2011-03-03 03:00:00 Hello 
Charlie  2011-06-06 06:00:00 Toast 

按數據排序。我無法弄清楚如何做到這一點。我雖然我可以這樣做:

SELECT DISTINCT(Name), timestamp, Data FROM Table ORDER BY Data 

但這不起作用。任何幫助將不勝感激, 乾杯。

回答

0
select t1.* from table as t1 
inner join (
select name,max(`timestamp`) as `timestamp` 
from table 
group by name) as t2 
on t1.name = t2.name and t1.`timestamp` = t2.`timestamp` 
0
SELECT DISTINCT Name, Timestamp, Data 
FROM Table 
WHERE Timestamp = 
    (
    SELECT MAX(Timestamp) 
    FROM Table AS tempTable 
    WHERE Table.Name = tempTable.Name 
    ) 
1

使用此查詢來獲取最後的獨特的價值觀,

SELECT * FROM (select * from `table` order by date DESC) t group by name 
相關問題