SQL JOINing最大值,即使它为0

时间:2014-06-10 19:01:50

标签: sql sqlite join distinct

我有两张看起来像这样的表:

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但实际上没有用,因为这就像搜索所有最长的跑道一样,而不是在一个特定机场的最长跑道。

1 个答案:

答案 0 :(得分:1)

这似乎很容易成为你想要的,但它似乎符合你所描述的所有情况......

SELECT A.Name, Max(R.Length)
FROM Airports A
INNER JOIN Runways R
 on A.uniqueID=R.AirportID
Group by A.Name

这应该为您提供每个机场的最大跑道。

如果您需要其他数据元素,请使用上面的内联视图(联接中的子查询)将结果集限制为仅限于那些机场及其最大跑道。