这个问题在这里已经有答案了:
sql仅选择列上具有最大值的行[重复](27个答案)
两年前关门了。
我有一个关于查询的练习,但我似乎找不到解决其中一个问题的方法。我有两张table:飞机和认证。
在aircrafts表中,我有信息辅助(飞机id)、aname(飞机名称)和crusingrange(飞机的最大距离):
AID Aname Crusingrange
1 BoeingFr 25000
2 BoeingUS 50000
3 Jet01 3000
4 Jet02 4000
在认证表中,我有以下信息帮助(飞机id)和eid(飞行员id):
AID EID
1 199
2 199
1 110
3 110
3 109
4 109
我想要的是飞行员的身份证和他/她能飞的最大巡航距离的飞机的身份证。
EID AID
199 2
110 1
109 4
我知道我必须在innerjoin中使用max,但我真的没有找到解决方案,我尝试分解代码,但仍然不可能。
谢谢您
2条答案
按热度按时间zsohkypk1#
如果数据库支持
row_number()
窗口函数,则可以联接表,然后按EID
选择最长的:4jb9z9bj2#
首先,得到最大值
Crusingrange
为了一个EID
,使用Join
以及Group By
. 将此结果用作派生表。现在,再次使用
Crusingrange
以及EID
.对于mysql,请尝试以下操作: