首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Impala SQL中组合左连接和内连接时的连接顺序控制

在Impala SQL中组合左连接和内连接时的连接顺序控制
EN

Stack Overflow用户
提问于 2017-12-12 19:57:51
回答 1查看 598关注 0票数 0

有了这种数据

代码语言:javascript
运行
复制
create table table_a as select 1 as id1;
insert into table_a values (2),(3);

create table table_b as select 1 as id1, 'a' as id2;
insert into table_b values (1,'b');

create table table_c as select 'a' as id2;

我在Impala sql中有以下类型的连接:

代码语言:javascript
运行
复制
   select *
     from table_a as a
left join table_b as b
       on b.id1 = a.id1
left join table_c as c
       on c.id2 = b.id2

产生这样的结果

代码语言:javascript
运行
复制
"id1","id1","id2","id2"
1,1,b,
1,1,a,a
2,,,
3,,,

我希望第二个连接是内连接而不是左连接:

代码语言:javascript
运行
复制
   select *
     from table_a as a
left join table_b as b
       on b.id1 = a.id1
     join table_c as c   /* <- How to process this join first without using inner queries? */
       on c.id2 = b.id2

并得到以下结果:

代码语言:javascript
运行
复制
"id1","id1","id2","id2"
1,1,a,a
2,,,
3,,,

因此,我希望先进行table_btable_c的内部连接,然后再进行table_a和(table_b内部连接到table_b)之间的左连接。

是否有可能在不使用内部查询的情况下以这种方式确定连接顺序?

EN

回答 1

Stack Overflow用户

发布于 2017-12-12 21:50:44

在@jarlh的帮助下,我实现了从左到右的连接处理,然后发现可以使用右连接:

代码语言:javascript
运行
复制
    select *
      from table_c as c
      join table_b as b
        on b.id2 = c.id2
right join table_a as a
        on a.id1 = b.id1;

为了得到想要的结果:

代码语言:javascript
运行
复制
"id2","id1","id2","id1"
a,1,a,1
,,,2
,,,3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47772073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档