4

我正在尝试为每个序列选择最新条目,而忽略 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 添加到查询中,但这只会重新排列输出(可以预测),而不是实际提取的行。我查看了一大堆不同的问题,但大多数都处理多个表或按更复杂的事物(例如日期)进行分组,我似乎无法以任何方式让这个查询正常工作。

我显然在这里遗漏了一些东西,告诉查询如何获得正确的序列,所以任何帮助将不胜感激!

4

1 回答 1

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
于 2012-09-27T03:22:55.283 回答