sql - 在 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 中完成吗?还有另一种方法可以做到这一点吗?
解决方案
您只需加入两次:
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 也会返回行。
推荐阅读
- google-bigquery - 当我查询分区表时,是否可以通过子查询按分区列进行过滤并同时降低成本?
- data-structures - 为什么错误选择数据结构会导致程序效率低下
- python - Appending rows from two separate pandas dataframes onto one dataframe based on certain conditions
- python - AttributeError:模块“tkinter”没有属性“样式”
- kubernetes - The PersistentVolume is invalid: spec: Required value: must specify a volume type
- regex - 翻译 Twig 匹配的工作正则表达式
- spring-cloud - Why isn't Kafka ProducerListener logging trace id and span id?
- rust - 如何在 Rust 工具链之间切换?
- python - 从加密的 PDF 中提取 Python 数据
- awk - 如何控制gawk中浮点数的格式?