有一个如下表格(表名 - > DriverLocation)。它有driverID和最后检查的日期时间。 我需要查询以获得每个驱动程序的最后检查时间。
DriverID DateTime
======= =========
2 2018-04-30 12:38:04 //Need
3 2018-04-30 11:26:04 //Need
1 2018-04-30 10:33:04 //Need
3 2018-04-30 10:15:04
4 2018-04-30 10:05:04 //Need
2 2018-04-30 09:22:04
3 2018-04-30 08:10:04
4 2018-04-30 08:09:04
1 2018-04-30 07:45:04
5 2018-04-30 07:31:04 //Need
4 2018-04-30 07:24:04
1 2018-04-30 06:53:04
3 2018-04-30 06:45:04
1 2018-04-30 05:33:04
2 2018-04-30 04:29:04
最终数据集应该是这样的。
DriverID DateTime
======= =========
2 2018-04-30 12:38:04 //Need
3 2018-04-30 11:26:04 //Need
1 2018-04-30 10:33:04 //Need
4 2018-04-30 10:05:04 //Need
5 2018-04-30 07:31:04 //Need
我不知道如何查询这种数据集。请指点我这样做。
答案 0 :(得分:0)
在datetime列上使用GROUP BY和MAX()函数:
SELECT DriverID, MAX(last_checked)
FROM DriverLocation
GROUP BY DriverID
答案 1 :(得分:0)
如果// Need不是DateTime列的一部分
你可以用
select DriverID, max(DateTime)
from my_table
group by DriverID
order by max(DateTime) DESC
答案 2 :(得分:0)
一起使用(将DateTime替换为您的列名实际上是什么):
SELECT *
FROM
( SELECT * FROM DriverLocation ORDER BY DateTime DESC) t
GROUP BY t.DriverID
GROUP BY在分组时占第一行,你的表在最近的日期预订,它会做的伎俩