我就是想不通这个问题。我有一个表如下:
路由日志表
id pro trailer arrival_date arrival_time
------- ------- --------- ------------ ------------
1 55 691995 2018-04-04 23:50:00
2 59 691995 2018-03-15 23:22:00
3 47 691995 2018-04-02 23:23:00
4 66 691995 2018-04-05 07:00:00
5 577 691995 2018-04-02 23:50:00
我想要的是通过连接日期和时间来获得最新的记录 ID。我知道我必须使用 max,但这很奇怪。如果我运行以下查询,我确实获得了最大日期,但没有获得与 MAX 匹配的预期记录 ID。
SELECT
routeLogTbl.pro,
MAX( TIMESTAMP( routeLogTbl.arrival_date, routeLogTbl.arrival_time ) ) AS DelTimeDate
FROM
routeLogTbl
WHERE
routeLogTbl.trailer = 691995
GROUP BY
routeLogTbl.trailer
最佳答案
使用子查询获取日期/时间的极值,然后使用连接条件检索详细记录,是执行此操作的标准方法。 (http://sqlfiddle.com/#!9/4d588b/1/0)
SELECT detail.*
FROM tbl detail
JOIN (
SELECT MAX(TIMESTAMP( arrival_date, arrival_time)) arrival_datetime,
trailer
FROM tbl
GROUP BY trailer
) m ON detail.trailer=m.trailer
AND TIMESTAMP( arrival_date, arrival_time) = arrival_datetime
这将为 trailer
的每个不同值在结果集中提供一行。
关于php - 如何选择具有最新时间戳的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49617748/