在Oracle SQL中,有没有一种方法可以将一个值联接两次?

时间:2020-10-29 13:43:08

标签: sql oracle

让我们说我有两个表,其中有以下几列:

汽车

motorcycle_id | fuel_id | secondary_fuel_id ...  

fuel_types

fuel_id | fuel_label | ...

在这种情况下,fuel_id和secondary fuel_id均参考fuel_types表。

是否可以在内部联接中包含两个标签?我想加入fuel_id,但我希望能够两次将Fuel标签作为新列。因此,连接将类似于:

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

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

这可以在SQL中使用联接吗?还有另一种方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

您只需加入两次:

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的两个表引用。

请注意,即使缺少其中一个ID,它也会使用left join来确保返回行。