mysql - SQL inner join with max

标签 mysql sql-server join max inner-join

<分区>

我有一个关于查询的练习,但我似乎无法找到其中一个问题的解决方案。我有两个表:Aircrafts 和 Certified。

在飞机表中,我有信息 AID(飞机的 ID)、Aname(飞机的名称)和 Crusingrange(飞机的最大距离):

AID    Aname       Crusingrange            
1     BoeingFr        25000   
2     BoeingUS        50000   
3      Jet01          3000  
4      Jet02          4000 

在 CERTIFIED 表中,我有此信息 AID(飞机 ID)和 EID(飞行员 ID):

AID    EID                   
1      199     
2      199  
1      110         
3      110        
3      109  
4      109    

我要的是飞行员的ID和他/她能飞的最大航程的飞机ID。

EID    AID                   
199     2    
110     1  
109     4 

我知道我必须在 INNER JOIN 中使用 MAX,但我真的没有找到解决方案,我试图分解我的代码,但仍然不可能。

谢谢

最佳答案

  • 首先,使用JoinGroup By 获取EIDCrusingrange 的最大值。使用此结果作为 Derived table .
  • 现在,使用 CrusingrangeEID 的最大值再次加入回到主表。

对于 MySQL,请尝试以下操作:

SELECT c1.EID, 
       a1.AID
FROM CERTIFIED AS c1
JOIN Aircrafts AS a1 ON a1.AID = c1.AID 
JOIN        
(
  SELECT c.EID, 
         MAX(a.Crusingrange) AS Crusingrange 
  FROM CERTIFIED AS c
  JOIN Aircrafts AS a ON a.AID = c.AID 
  GROUP BY c.EID 
) AS dt ON dt.Crusingrange = a1.Crusingrange AND 
           dt.EID = c1.EID 

关于mysql - SQL inner join with max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52784208/

相关文章:

sql - 检查父行是否有任何子行的简单 SQL

mysql - 加入不应该返回零元素的地方

mysql - Inner Join返回错误记录

c# - SQL Server VARBINARY(max) 到 c# byte[]

mysql - 包含引用同一个表的两个外键的复合主键 : SQL Server vs. MySQL

sql-server - sql server 如何将 nvarhcar 列默认为 GUID(如果它为 null 或空)

sql - 如何在多个JOIN中获得联接列

mysql - SQL 子查询返回空值行

php - 价格中缺少 2 位小数(PHP)

php - mysql建表失败