我有2张桌子,车辆描述和一张经纬度的逻辑表(随行)。两个表都有一个Id键(PK和FK)。
我的选择看起来像这样
SELECT vehicles.id, vehicles.description, vehicles.type,
positions.time_stamp, positions.latitude, positions.longitude
FROM vehicles
INNER JOIN positions
ON vehicles.id=positions.id
我想对其进行ORDER和LIMIT,以便它仅显示每个车辆报告的最新poisiotn的连接值。
我怎样才能做到这一点?谢谢
[更新]我创建了this SqlFiddle demo,但没有得到想要的结果。
我想我需要一些类似的东西
ORDER BY positions.time_stamp DESC
LIMIT SELECT COUNT(*) FROM vehicles
如果仅是有效语法:-/
[进一步更新]对于那些关注Thinsg执行顺序的人:
positions
表中不会有删除,只有插入每辆车每隔几分钟插入一次
我可以忍受奇特的异常现象,这在我演说中将是极为罕见的
车辆的详细信息更改的可能性很小,我要做的就是添加新位置
这样会更容易吗?
最佳答案
SELECT v.id
, v.description
, v.type
, p.time_stamp
, p.latitude
, p.longitude
FROM positions p
JOIN vehicles v ON v.id = p.id
WHERE p.time_stamp = (SELECT MAX(l.time_stamp)
FROM positions l
WHERE l.id = p.id)
结果:
| ID | DESCRIPTION | TYPE | TIME_STAMP | LATITUDE | LONGITUDE |
---------------------------------------------------------------------------------
| 1 | Trabant | car | April, 19 2013 13:43:12+0000 | 26.77994 | 402.46261 |
| 2 | Bus # 42 | bus | April, 19 2013 13:43:12+0000 | 32.77994 | 48.46261 |
关于mysql - 限制内部联接返回的行数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16096659/