mysql - 如何在mysql上选择每辆出租车的最新位置
问题描述
如何选择每辆出租车的最新位置
我想将出租车位置存储在下面的 sql 脚本中,我尝试选择每辆出租车的最新位置,如果一个出租车 ID 有多个位置数据,则查询应该采用最新位置
CREATE TABLE Taxi_Loc (
LocIds INT(255) AUTO_INCREMENT,
TaxiId INT(10) NOT NULL,
Latitude FLOAT(10,6) ,
Longitude FLOAT(10,6),
CreateDate TIMESTAMP,
PRIMARY KEY (LocIds),
FOREIGN KEY (TaxiId) REFERENCES Taxis(TaxiId)
)
我的桌子是
LocId TaxiId Latitude Longitude CreatedDate
2 2 -33.729752 150.836090 12/26/18 01:46 AM
3 1 -33.812222 151.143707 12/26/18 01:46 AM
4 1 -33.903557 151.237732 12/26/18 01:46 AM
5 3 -33.949448 151.008591 12/26/18 01:46 AM
6 2 -33.815521 151.026642 12/26/18 01:46 AM
7 4 -33.796669 151.183609 12/26/18 01:46 AM
8 3 -33.829525 150.873764 12/26/18 01:46 AM
9 5 -33.944489 150.854706 12/26/18 01:46 AM
10 4 -33.873882 151.177460 12/26/18 01:46 AM
11 1 -33.737885 151.235260 12/26/18 04:26 PM
我想得到这个结果
LocId TaxiId Latitude Longitude CreatedDate
2 2 -33.729752 150.836090 12/26/18 01:46 AM
3 1 -33.812222 151.143707 12/26/18 01:46 AM
5 3 -33.949448 151.008591 12/26/18 01:46 AM
7 4 -33.796669 151.183609 12/26/18 01:46 AM
9 5 -33.944489 150.854706 12/26/18 01:46 AM
解决方案
SELECT * FROM Taxi_Loc WHERE LocIds IN (SELECT MAX(LocIds) FROM Taxi_Loc GROUP BY TaxiId)
解释:
以下子查询有助于找到相关LocIds
的。这假设最新LocIds
的数字更高。
从 Taxi_Loc GROUP BY TaxiId 中选择 MAX(LocIds)
推荐阅读
- java - 从一系列分页网络调用生成 Spring Flux
- android - 如何在 Google Play 控制台中为应用程序签名退出 .aab 文件
- react-native - 如何在 React Native 中制作简单的音频播放器
- ansible - 远程主机上的 ansible-pull
- node.js - 模板引擎将我的代码设置到错误的位置。有什么错误?
- java - 在 Android 中使用电子邮件链接通过 Firebase 进行身份验证
- java - Java\JSON: UnrecognizedPropertyException: Unrecognized field "CefMessagesGenerators" 错误
- vb.net - 选择消息框图标时出现消息框错误 vb.net
- php - Check values inside a foreach loop
- python - 如何从 python 脚本中抑制特定警告?