mysql - 如何在 MySQL 的同一列上使用 Left Join 两次?

标签 mysql left-join

我有两张表,一张用于机场,一张用于航线。

机场看起来有点像这样

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/

相关文章:

sql select语句提供更多行然后记录在表中

php - Laravel:如何获取表列名称、类型和长度

mysql - "Invalid use of group function"未使用组功能

left-join - 在 netezza 中使用左连接进行更新

mysql - 错误代码 : 1060. 不是唯一的表/别名: `table1`

mysql - 表的左连接部分

mysql - 即使在 SELECT First 之后,双重请求也会重复数据库条目

php - if else 错误消息总是显示 else 语句消息

sql - 如何将一个表中的新记录插入到另一个表中

MYSQL LEFT JOIN,表名取决于表列值