如何从关联表中选取数据并返回出发地与目的地名称的SQL实现
解决方法:两次关联同一张表获取出发地和目的地名称
这其实是个很常见的SQL场景——当你需要从同一张关联表中获取两个不同字段对应的名称时,只需要对这张表做两次JOIN操作,并通过别名区分即可。
具体实现SQL语句
SELECT l_from.location_name AS departure_location, l_to.location_name AS arrival_location, h.start_time, h.end_time FROM holiday h JOIN locations l_from ON h.location_from = l_from.location_id JOIN locations l_to ON h.location_to = l_to.location_id;
语句说明
- 给
holiday表起别名h,简化代码书写; - 第一次关联
locations表时用别名l_from,对应holiday表的location_from(出发地ID),拿到出发地名称; - 第二次关联
locations表时用别名l_to,对应holiday表的location_to(目的地ID),拿到目的地名称; - 通过
AS关键字给查询结果的字段设置更直观的别名,比如departure_location(出发地名称)和arrival_location(目的地名称); - 如果你不需要行程时间,可以直接删掉
start_time和end_time字段。
测试结果
用你提供的示例数据运行这条SQL,会得到如下结果:
| departure_location | arrival_location | start_time | end_time |
|---|---|---|---|
| sydney | gold coast | 13:00 | 17:00 |
内容的提问来源于stack exchange,提问作者Zypher100
相关产品推荐
相关产品推荐

