oracle(+)运算符在>(更多)或<(less)的位置

时间:2018-02-02 14:40:25

标签: sql oracle join hive

我已经读过它,并知道在这种情况下它是如何工作的

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;

1 个答案:

答案 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表,但通常不需要重复项。