如何基于两个字段对同一张表执行LEFT JOIN左连接查询
解决方案
同一张维度表需要参与多次关联时,只需要给每次关联的维度表设置独立的表别名,分别匹配对应关联字段即可,不需要额外的特殊语法。
可直接运行的SQL代码
SELECT t.id, g1.name AS group1, g2.name AS group2 FROM Tab1 t LEFT JOIN groupTable g1 ON t.group1_id = g1.id LEFT JOIN groupTable g2 ON t.group2_id = g2.id;
实现说明
- 给主表
Tab1设置别名t简化书写,两次关联groupTable时分别设置别名g1、g2,避免同名字段引用冲突 - 第一次关联逻辑:用主表的
group1_id匹配g1的主键id,取出的name字段重命名为group1,对应第一个分组的名称 - 第二次关联逻辑:用主表的
group2_id匹配g2的主键id,取出的name字段重命名为group2,对应第二个分组的名称 - 上述SQL执行后返回的结果完全匹配预期:
------------------------ | id | group1 | group2 | ------------------------ | 1 | boats | cars | | 2 | boats | bikes | | 3 | cars | boats | ------------------------
如果后续需要更多维度关联同一张维度表,按照相同逻辑新增带独立别名的LEFT JOIN即可,没有关联次数限制。
内容的提问来源于stack exchange,提问作者executable
相关产品推荐
相关产品推荐

