限制内部联接返回的行数

限制内部联接返回的行数

我有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表中不会有删除,只有插入
每辆车每隔几分钟插入一次
我可以忍受奇特的异常现象,这在我演说中将是极为罕见的
车辆的详细信息更改的可能性很小,我要做的就是添加新位置


这样会更容易吗?

最佳答案

查询:

SQLFIDDLEExample

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/

10-11 03:38