我有以下查询,
SELECT startTime, lat, lon
FROM table
WHERE category = 12
AND playerId = 10
AND CAST(startTime as date) >= (select max(CAST(startTime as date)) from table)
逻辑是最后(最大)日期取经度,经度。所以,今天所有的一切。问题是我得到了一组结果,因为最大日期是
10-7-2019 00:00:00 52.521 113.658
10-7-2019 00:10:00 42.521 103.658
10-7-2019 00:20:00 22.521 93.658
etc...
((由于同一天的时间不同,我在相同的最大日期获得了很多结果。我没有得到仅一行)
如何从以上设置中获取最大值?我必须做类似
的事情AND CAST(startTime as time) >= (select max(CAST(startTime as time)) from table)
在结果集上获得10-7-2019 23:59:59 22.521 93.658
。我不知道该怎么做。有点像
SELECT time, lat, lon
FROM table
WHERE category = 12
AND playerId = 10
AND CAST(startTime as date) AS ABC >= (select max(CAST(startTime as date)) from table)
AND CAST(startTime as time) >= (select max(CAST(startTime as time)) from ABC)
谢谢
您可以只使用order by
和limit
吗?
SELECT startTime, lat, lon
FROM table
WHERE category = 12 AND playerId = 10
ORDER BY startTime DESC
LIMIT 1;
如果只想在数据的最后一个日期得到结果(整体),则可以使用子查询或窗口函数:
SELECT startTime, lat, lon
FROM (SELECT t.*,
DENSE_RANK() OVER (PARTITION BY date(startTime) DESC) as seqnum
FROM table t
) t
WHERE category = 12 AND playerId = 10 AND
seqnum = 1
ORDER BY startTime DESC
LIMIT 1;
您能试试这个吗..
SELECT startTime, lat, lon
FROM table
WHERE category = 12
AND playerId = 10
AND CAST(startTime as datetime) >= (select max(CAST(startTime as datetime)) from table)
例如。。
SELECT Max(Cast(CreatedOn as datetime))
from TimeSheetJob
结果:-
2019-10-04 15:52:29.080