sql联接的值不匹配?

c0vxltue  于 2021-06-26  发布在  Impala
关注(0)|答案(2)|浏览(357)

我的加入产生了我不明白的结果。
如果这是重要的或相关的,我用Parquet表在 Impala 。
我要做的是:

create table test1(foo string, bar int) stored as parquet;
create table test2(foo string, bar int) stored as parquet;
insert into test1 values ("something1",1);
insert into test2 values ("something2",2);

检查以确保工作正常:

select * from test1;

给我输出:

+----------------------+
| foo      | bar |
+----------------------+
| something1 | 1     |
+----------------------+
1 rows

以及

select * from test2;

给我输出:

+----------------------+
| foo      | bar |
+----------------------+
| something2 | 2     |
+----------------------+
1 rows

到目前为止一切都很好。但是现在当我尝试用

select * from test1 left outer join test2 using (foo);

我得到:

+---------------------------------------------+
| foo      | bar | foo      | bar |
+---------------------------------------------+
| something1 | 1     | something2 | 2     |
+---------------------------------------------+
1 rows

真是出人意料。我希望输出是1,1,null,null。连接不应该只在test1.foo=test2.foo时发生吗?
我还尝试了在test1.foo=test2.foo上使用syntax join以及内部连接来实现这一点,并看到了相同的结果。
有人能给我解释一下这是怎么回事吗?我重新阅读了文档,我不明白为什么会这样。

mbskvtky

mbskvtky1#

试试这个

select * from test1 left outer join test2 on test1.foo=test2.foo
vi4fp9gy

vi4fp9gy2#

更新:这似乎是一个工程错误。谢谢你的帮助和反馈

相关问题