2012-01-30 31 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的世界是否也有这样的事情,但也许你想看看它:

好运!

编辑:但如果可能,如果它给你正确的结果,我会去与迈克尔的答案。