我有两张表,一张用于机场,一张用于航线。
机场看起来有点像这样
Airports
-------------------------------------
id | code | name |
-------------------------------------
01 | LGW | London Gatwick |
-------------------------------------
02 | LHR | London Gatwick |
等等....
还有一个像这样的路线
Routes
---------------------------
id | ORIGIN | DESTINATION |
---------------------------
01 | LGW | VCE |
---------------------------
02 | TSF | LHR |
等等……
我需要从表中选择路线,但我也想获得机场名称。令人困惑的一点是我需要两次查询机场代码。我正在尝试这样的事情
SELECT routes.*, airports.name as origin_name FROM routes
LEFT JOIN airports ON airports.IATA = routes.origin
LEFT JOIN airports ON airports.IATA = routes.destination
WHERE origin = 'LHR' AND destination = 'VCE' OR origin = 'VCE'
您可能知道也可能不知道,但行不通。我该怎么做呢?
最佳答案
使用别名:
SELECT
routes.*,
a1.name AS origin_name,
a2.name AS destination_name
FROM routes r
LEFT JOIN airports a1 ON a1.IATA = r.origin
LEFT JOIN airports a2 ON a1.IATA = r.destination
WHERE
r.origin = 'LHR' AND r.destination = 'VCE' OR r.origin = 'VCE'
关于mysql - 如何在 MySQL 的同一列上使用 Left Join 两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/966782/