首页 > 解决方案 > 在 Oracle SQL 中,有没有办法将一个值加入两次?

问题描述

假设我有两个表,包含以下列:

汽车

motorcycle_id | fuel_id | secondary_fuel_id ...  

燃料类型

fuel_id | fuel_label | ...

在这种情况下,fuel_id 和辅助fuel_id 都参考fuel_types 表。

是否可以在内部连接中包含两个标签?我想加入fuel_id,但我希望能够将燃料标签两次作为新列。所以加入将是这样的:

motorcycle_id | fuel_id | fuel_label | secondary_fuel_id | secondary_fuel_label | ...

在这种情况下,我会创建 secondary_fuel_label 列。

这可以在带有连接的 SQL 中完成吗?还有另一种方法可以做到这一点吗?

标签: sqloracle

解决方案


您只需加入两次:

select c.*, f1.fuel_label, f2.fuel_label as secondary_fuel_label
from cars c left join
     fuel_types f1
     on c.fuel_id = f1.fuel_id left join
     fuel_types f2
     on c.fuel_id = f1.secondary_fuel_id ;

这里的关键点是使用表别名,这样可以区分两个表的引用fuel_types

请注意,这用于left join确保即使缺少其中一个 id 也会返回行。


推荐阅读