hive表关联条件不支持不等值连接
不等式:(>=,>,<=,<,<>,between..and)
场景
:oracle里面的SQL转化成hiveSQL中,关联时ON里面的条件如果含有不等值,那么在hive中不能直接使用,如果将不等式放在where条件中,造成下面描述问题
:
直接将不等值连接放在where条件中会过滤掉主表的部分数据,
解决
方案:
需要先通过inner join
加上非等值条件
再left join
示例
图:
--按照正常思路直接放在where下面(错误)
select t.id,t.date,t1.date
from t
lfet join t1 on t.id=t1.id
and t.date>t1.date
--正确写法
select t.id,t.date,t2.date
from t
lfet join
(select t.id,t1,date
from t
inner join t1 on t.id=t1.id
where t.date>t1.date) t2
on t.id=t2.id