Error:SemanticException [Error 10249]: Line 1:146 Unsupported SubQuery Expression 'userid': Correlating expression cannot contain unqualified column references. hive查询中,这个异常想必大家经常会遇到,在hive中,in、not in 是不支持子查询的,今天来看看替代的方法
先说说需求场景
我们模拟的需求,从A表查询的时候,需要在结果中过滤掉B表中的userid。 上sql
select DISTINCT userid FROM TABLE_A AS a WHERE a.dt >= '20200209' AND a.userid NOT IN (SELECT DISTINCT userid FROM TABLE_B AS b WHERE b.dt >= '20200209');
这是我们的正常逻辑,使用not in 过滤掉b表中的userid。但是hive目前,in、not in 是不支持子查询的,就会报我们开始提到的那个错误:
Error:SemanticException [Error 10249]: Line 1:146 Unsupported SubQuery Expression 'userid': Correlating expression cannot contain unqualified column references
使用join进行改写
使用jion改写,应该是我们最先想到的一种方式,至于连接的方式,应该根据具体的需求具体分析吧,这里使用left jion