分组字段以显示最近日期

时间:2013-04-02 22:06:25

标签: mysql sql database

我有一个我似乎无法弄清楚的快速问题。我正在尝试列出最终用户项目(只是一个示例),只显示最新的评论。

ID  Name    EventDate     Type
1   PC      12/12/2012    End User Items 
1   PC      11/12/2012    End User Items 
1   PC      10/11/2012    End User Items 
2   Mobile  12/12/2012    End User Items 
2   Mobile  11/01/2012    End User Items 
2   Mobile  12/12/2011    End User Items 
3   Server  12/12/2013    Server

所以我会尝试这样的事情:

select * from systems where type = "End User Items" group by ID

但结果仍然没有显示最新日期。 任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

您是否尝试过如下MAX日期?

SELECT  Name,
    MAX(EventDate),
    Type
  FROM  systems
  WHERE type = 'End User Items'
  GROUP BY Name, Type

答案 1 :(得分:0)

您可以使用子查询获取ID和MAX日期,然后使用ID和MAX日期加入系统表。

SELECT s2.Name, s.EventDate
FROM system s2 
INNER JOIN (SELECT ID, MAX(EventDate) EventDate
            FROM systems
            WHERE type = 'End User Items'
            GROUP BY ID) AS s on s2.ID = s.ID AND s2.EventDate = s.EventDate

答案 2 :(得分:0)

将您要显示的列定义为GROUP BY字段而不进行汇总。选择那些字段和计算的汇总函数列(例如,max(),sum(),count())。

SELECT ID, Name, MAX(EventDate) as LastDate
  FROM  systems
  WHERE type = 'End User Items'
  GROUP BY ID, Name

您可能希望查看ID和名称。类型在这里是多余的,因为您只需要一个类型。您想获得组中的max()日期。返回的所有字段必须是摘要函数或GROUP BY列。