我在这里遇到了一个令人困惑的情况......在mysql中有一个如下所示的表:
https://{functionName}.azurewebsites.net/api/endpoint?Params
The Header contains Authorization Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJS.....
我正在尝试获取每个vehicle_id的最后一个已知位置
这是我试过的:
----locations----
+--------------------------------------------------------+
| id | time | lat | lon | vehicle_id|
| 1 | 1513865119 |13.0398796 | 77.6242876 | 1 |
| 2 | 1513865119 |13.0398796 | 77.6242876 | 1 |
| 3 | 1513865119 |13.0398796 | 77.6242876 | 2 |
| 4 | 1513865119 |13.0398796 | 77.6242876 | 2 |
| 5 | 1513865119 |13.0398796 | 77.6242876 | 4 |
| 6 | 1513865119 |13.0398796 | 77.6242876 | 3 |
| 7 | 1513865119 |13.0398796 | 77.6242876 | 2 |
| 8 | 1513865119 |13.0398796 | 77.6242876 | 3 |
| 9 | 1513865119 |13.0398796 | 77.6242876 | 3 |
| 10 | 1513865119 |13.0398796 | 77.6242876 | 1 |
+--------------------------------------------------------+
但上面的代码只返回一辆车。
我需要同样地检索所有车辆,所以我该怎么做?
提前致谢。
答案 0 :(得分:2)
这似乎是您想要的查询:
SELECT t1.*
FROM locations t1
INNER JOIN
(
SELECT vehicle_id, MAX(time) AS max_time
FROM locations
GROUP BY vehicle_id
) t2
ON t1.vehicle_id = t2.vehicle_id AND
t1.time = t2.max_time;
这会将您的locations
表连接到子查询,该子查询可查找每辆车的最新记录。我上面使用了“似乎”,因为您的样本数据(可能巧合)显示了每辆车的确切时间。当然,为了使我的回答有意义,您需要为每辆车的最新记录提供更大的time
值。
答案 1 :(得分:0)
使用DISTINCT,如下所示:
SELECT DISTINCT(*) FROM locations ORDER BY id
答案 2 :(得分:0)
在Laravel中作为你的标签
@RequestMapping(value="/", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public String info() {
return "hello";
}