如何在 Hive 的不平等条件下进行左连接
How do I do a LEFT join on INEQUALITY condition in Hive
我需要在
上实现左连接
TABLE答:id(1,2,3);价值(A,B,C)<br>
TABLE B: id(2,3);价值(E,F)
然后写一个连接给我,
TABLE C: A.id(1,2,3); B.id(NULL,NULL,2); A.value(A,B,C); B.value(NULL,NULL,E)
如果你的数据是这样的:
id val
1 A
2 B
3 C
还有这个
id val
2 E
3 F
你想要
id val1 id2 Val2
1 A null null
2 B 2 E
3 C null null
然后:
select a.id as aid, a.val as aval, b.id as bid, b.val as bval
from table1 a
left outer join
table2 b
on a.id = b.id
where b.id = 2;
当然你的条件是 b.val = E 或其他东西,但你不清楚。
你也可以这样做:
select a.*, b.val as bval
from table1 a
left outer join
(Select * from table2 where id = 2) b
on a.id=bid;
那么您就不会随身携带可能没有附加信息的额外 ID。您也可以通过其他方式调节 table。再次不确定它是否正是您所需要的,但祝你好运。
我需要在
上实现左连接TABLE答:id(1,2,3);价值(A,B,C)<br>
TABLE B: id(2,3);价值(E,F)
然后写一个连接给我,
TABLE C: A.id(1,2,3); B.id(NULL,NULL,2); A.value(A,B,C); B.value(NULL,NULL,E)
如果你的数据是这样的:
id val
1 A
2 B
3 C
还有这个
id val
2 E
3 F
你想要
id val1 id2 Val2
1 A null null
2 B 2 E
3 C null null
然后:
select a.id as aid, a.val as aval, b.id as bid, b.val as bval
from table1 a
left outer join
table2 b
on a.id = b.id
where b.id = 2;
当然你的条件是 b.val = E 或其他东西,但你不清楚。
你也可以这样做:
select a.*, b.val as bval
from table1 a
left outer join
(Select * from table2 where id = 2) b
on a.id=bid;
那么您就不会随身携带可能没有附加信息的额外 ID。您也可以通过其他方式调节 table。再次不确定它是否正是您所需要的,但祝你好运。