我的桌子正在接收来自两个GPS设备的坐标和纬度+其他信息。每当GPS发送新的iformation时,它会将ID递增1。我想要一个从设备1和设备2获取最高ID(最后收到的信息)的查询,这样我就可以将它显示给我的GoogleMap应用程序。有人可以帮我查询吗? 我表中的行如下所示:
Table
===============================
ID LAT LNG DeviceID
1 # # 1
2 # # 1
3 # # 1
4 # # 1 <---This
1 # # 2
2 # # 2
3 # # 2
4 # # 2 <---This
答案 0 :(得分:0)
使用类似的东西:
SELECT DeviceID, max(ID) from Table GROUP BY DeviceID
每个设备ID都有一行
答案 1 :(得分:0)
要获取ID列和DeviceID,您应该group按ID,并选择组中的最大ID。
SELECT MAX(ID), DeviceID
FROM Table
GROUP BY DeviceID
但是在mysql中你不允许聚合非分组列,在这种情况下,mysql只返回第一行。所以首先你需要订购它,然后分组
select DeviceId, ANY_VALUE (LAT), ANY_VALUE(LNG), MAX(id)
from
(select *
from table
order by `DeviceID`, id desc, lat, lng) x
group by `DeviceId`
或者您可以获得max(id)和DeviceId,然后使用Join来获取其他行。
select positions.id, positions.lat, positions.lng, positions.DeviceId
from positions
inner join
(select max(id) as mId, DeviceId
from positions
group by DeviceId) maxt on (positions.id = maxt.mId and positions.DeviceId = maxt.DeviceId)