hive的join语法仅支持等值连接,不支持非等值的连接
select *
from a
join
b
on
a.id>b.id;
这种情况是不被允许的,直接报错。
可以采取这种方法:
select *
from a
join
b
on
a.id=b.id;
或者:
select * from a,b
where a.id>b.id;
如果有如下的需求:
SELECT *
FROM table1
RIGHT JOIN table2
ON table2.x LIKE CONCAT('%' , table1.y , '%')
用以上代码放到HIVE中执行,发现报错,原因是HIVE不支持非等值连接。
那么可以这样处理:
SELECT *
FROM table1
RIGHT JOIN table2
ON(TRUE)
WHERE LOCATE(table1.y,table2.x)
备注: 使用 LOCATE(substr , str) 函数,如果包含,则返回 >0 的数,否则返回0。