2012-01-30 71 views
0

讓我們假設我有一個表這樣:如何日期值分配給所有返回的MySQL查詢

ID | Date  | Owner | Activity 
---------------------------------------- 
1 | 1/2/2011 | Joe  | Login 
2 | 2/1/2011 | Mary | Logout 
1 | 2/3/2011 | Bob  | Process 
3 | 5/6/2010 | Harry | Send 
2 | 8/1/2011 | Alice | Hide 

我如何可以運行檢索所有值,但對於日期字段我有最大的查詢(日期)爲每個條目的ID。

因此,如果我是選擇*(與其他語句我還不知道如何運行)的輸出將是:由ID子查詢分組

ID | Date  | Owner | Activity 
---------------------------------------- 
1 | 2/3/2011 | Joe  | Login 
2 | 8/1/2011 | Mary | Logout 
1 | 2/3/2011 | Bob  | Process 
3 | 5/6/2010 | Harry | Send 
2 | 8/1/2011 | Alice | Hide 

回答

1

INNER JOIN返回MAX(Date)應做的工作:

SELECT 
    t.ID, 
    d.maxdate 
    t.Owner, 
    t.Activity 
FROM 
    tbl t INNER JOIN (
    SELECT ID, MAX(Date) AS maxdate FROM tbl GROUP BY ID 
) d ON t.ID = d.ID 
0

PARTITION了Oracle的解析函數可能是做你所期待的另一種方式。我從來沒有真正使用過它,我完全不知道,非Oracle的世界是否也有這樣的事情,但也許你想看看它:

好運!

編輯:但如果可能,如果它給你正確的結果,我會去與邁克爾的答案。