我的连接正在产生我不明白的结果。加入的值不匹配?
如果它很重要或相关,我在Impala中使用Parquet Tables。
我在做什么是:
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和内部连接上使用语法连接,并看到相同的结果。
有人可以向我解释这里发生了什么事吗?我重读了文档,我不明白为什么会发生这种情况。
您正在做一个左外连接,您想要一个内连接吗?您也正在使用不匹配的列...因此,使用外连接时的结果集 – Charleh
我想要执行左外连接。这是一个我正在观察的更大型数据集的简化版本。试图用两个表格中最简单和最小的数据集来复制问题,每个表格有1行。 如上所述,如果我使用内部连接,输出是相同的 – tehc0w
我认为你已经过度简化了这个问题。如上所述,这是可笑的行为,并且会指示数据库中的错误。 –