我有两张看起来像这样的表:
Airports
uniqueID | Name
0001 | Dallas
Runways
uniqueID | AirportID | Length
000101 | 0001 | 8000
我正在做一个看起来像这样的联接:
SELECT Airports.Name, Runways.Length FROM Airports, Runways
WHERE Airports.uniqueID==Runways.AirportID
显然,每条跑道只有一个机场,每个机场都有1..n跑道。
对于有多条跑道的机场,这给了我几排,一个用于该机场的每条跑道。 我想要一个只包含最长跑道的行的结果集,即MAX(长度)。 有时,数据库中的多条跑道的长度为0,因为缺少源数据。在这种情况下,我只想要一个长度为0的行。
我已尝试过这里列出的方法:Inner Join table with respect to a maximum value但实际上没有用,因为这就像搜索所有最长的跑道一样,而不是在一个特定机场的最长跑道。
答案 0 :(得分:1)
这似乎很容易成为你想要的,但它似乎符合你所描述的所有情况......
SELECT A.Name, Max(R.Length)
FROM Airports A
INNER JOIN Runways R
on A.uniqueID=R.AirportID
Group by A.Name
这应该为您提供每个机场的最大跑道。
如果您需要其他数据元素,请使用上面的内联视图(联接中的子查询)将结果集限制为仅限于那些机场及其最大跑道。