有了这种数据
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中有以下类型的连接:
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产生这样的结果
"id1","id1","id2","id2"
1,1,b,
1,1,a,a
2,,,
3,,,我希望第二个连接是内连接而不是左连接:
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并得到以下结果:
"id1","id1","id2","id2"
1,1,a,a
2,,,
3,,,因此,我希望先进行table_b和table_c的内部连接,然后再进行table_a和(table_b内部连接到table_b)之间的左连接。
是否有可能在不使用内部查询的情况下以这种方式确定连接顺序?
发布于 2017-12-12 21:50:44
在@jarlh的帮助下,我实现了从左到右的连接处理,然后发现可以使用右连接:
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;为了得到想要的结果:
"id2","id1","id2","id1"
a,1,a,1
,,,2
,,,3https://stackoverflow.com/questions/47772073
复制相似问题