我已经读过它,并知道在这种情况下它是如何工作的
select a.id
from a, b
where a.id = b.id(+)
但是这个呢?
select a.id
from a, b
where a.id = b.id2(+) and a.id > b.id(+)
与
不一样select a.id
from a
left outer join b
on a.id = b.id2
where a.id > b.id
我该怎么改呢? 我需要将其重写为hive,但是hive不支持
on a.id = b.id and a.id > b.id;
答案 0 :(得分:0)
虽然不完全相同(有一些边缘情况),但这可能会做你想要的:
select a.id
from a left outer join
b
on a.id = b.id2
where (a.id > b.id or b.id2 is null);
但是,您的表达式仅从id
获取a
并使用left join
。因此,这可能足够好了:
select a.id
from a ;
不可否认,它不会将匹配产生的重复项返回给b
表,但通常不需要重复项。