我正在尝试为每个序列选择最新条目,忽略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添加到查询中,但是只重新排列了输出(可预测),而不是实际获取的行。我已经看了很多不同的问题,但是大多数处理多个表或者通过更复杂的事情进行分组,例如日期,我似乎无法以任何方式跟随它,这使得我可以使这个查询正常工作。
我显然在这里遗漏了一些告诉查询如何获得正确序列的内容,所以非常感谢任何帮助!
答案 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