按日期按序列分组选择最新条目

时间:2012-09-27 03:19:53

标签: mysql sql

我正在尝试为每个序列选择最新条目,忽略MySQL数据库中的所有其他条目。我目前使用的SQL命令是:

SELECT *,MAX(date) FROM `gps-log` GROUP BY serial DESC

每个序列只返回一个条目(完美),但是按照以下示例获取第一个条目,而不是最新条目。标识了正确的最大日期,但由于某种原因未提取该记录。

pos                       elev    serial      date                  MAX(date)
-33.8710138,151.1924356   54.0m   SDGH23465   2012-09-26 17:01:59   2012-09-27 12:14:23
-33.8707848,151.1925109   54.0m   SDGH29648   2012-09-27 12:14:30   2012-09-27 12:21:41

我尝试将DESC添加到查询中,但是只重新排列了输出(可预测),而不是实际获取的行。我已经看了很多不同的问题,但是大多数处理多个表或者通过更复杂的事情进行分组,例如日期,我似乎无法以任何方式跟随它,这使得我可以使这个查询正常工作。

我显然在这里遗漏了一些告诉查询如何获得正确序列的内容,所以非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

试试这个,

SELECT  a.*
FROM    `gps-log` a
        INNER JOIN
        (
            SELECT serial, MAX(`date`) maxDate
            FROM `gps-log`
            GROUP BY serial
        ) b ON a.serial = b.serial AND
                a.`date` = b.maxDate