SQL连接在最大值上,即使该值为0
我有两张大致如下的桌子:SQL连接在最大值上,即使该值为0,sql,sqlite,join,distinct,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 我正在做一个连接,看起来像这样: Air
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
我正在做一个连接,看起来像这样:
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(Length)。
有时,数据库中多条跑道的长度为0,因为缺少源数据。在这种情况下,我只需要一行的长度=0
我尝试过这里列出的方法:但这实际上没有帮助,因为这就像在所有跑道中搜索最长的跑道,而不是在某个特定机场搜索最长的跑道。这似乎很简单,但似乎满足了您描述的所有情况
SELECT A.Name, Max(R.Length)
FROM Airports A
INNER JOIN Runways R
on A.uniqueID=R.AirportID
Group by A.Name
这将为您提供每个机场的最大跑道
如果您需要其他数据元素,则使用上述作为内联视图(联接中的子查询),将结果集限制为仅限于这些机场及其最大跑道。当多个机场的长度为0时,使用什么标准来确定要返回的跑道?(airportID最小的airportID?@xQbert它可以是随机的。如果它们以Length=0存储在DB中,我不在乎。就挑一个吧,不,就这样。如果它看起来“太简单”,那是因为自2005年以来我没有做过任何SQL,所以我甚至忘记了最简单的事情。