分组依据和最新订购

时间:2013-03-21 23:52:31

标签: mysql sql greatest-n-per-group

我希望按开始时间(最新一行)按ID和顺序进行分组。

数据:

begintime           id  type    created_at
2012-12-13 01:00:00 1   type1   2012-12-01 11:39:47
2012-12-13 00:00:00 1   type2   2012-12-02 00:29:10
2012-12-13 03:00:00 2   type3   2012-12-05 00:20:43
2012-12-13 02:00:00 2   type2   2012-12-06 11:31:41
2012-12-13 00:00:00 2   type1   2012-12-07 00:58:11

我想得到:

begintime   id  type    created_at
2012-12-13 01:00:00 1   type1   2012-12-01 11:39:47
2012-12-13 03:00:00 2   type3   2012-12-05 00:20:43

我怎样才能得到它?

2 个答案:

答案 0 :(得分:2)

你的标题与你所写的问题相矛盾。它说LATEST,但你真的想要每created_ATID。无论如何,

您可以使用子查询,每个created_AT分别获得最小ID。然后连接子查询的结果以获取其他列的值。

SELECT  a.*
FROM    TableName a
        INNER JOIN
        (
            SELECT  ID, MIN(created_AT) max_date
            FROM    TableName
            GROUP   BY ID
        ) b ON  a.ID = b.ID AND
                a.created_AT = b.max_date

答案 1 :(得分:0)

试试这个:

SELECT * 
FROM table_name 
GROUP BY id 
ORDER BY 
  id ASC, 
  begintime DESC;

希望它有所帮助!