不支持的子查询表达式:关联表达式不能包含不合格的列引用

时间:2016-05-13 09:52:35

标签: sql hadoop hive

Hive中,以下查询失败:

  Select a,b,c from t1 where a in (0,100) AND b in (select b from t2
  where d>2 GROUP BY 1 ) LIMIT 1;

架构:

t1(a,b,c)
t2(b,d,e)

错误日志:

  

不支持的子查询表达' b':关联表达式不能   包含不合格的列引用。

什么是关联表达?什么是不合格的列引用?你可以在这里概括错误..

2 个答案:

答案 0 :(得分:16)

您可以找到具有相同问题的人here和相应的JIRA ticket

基于这些答案,我建议你试试:

Select a,b,c from t1 where a in (0,100) AND t1.b in (select b from t2
  where d>2 GROUP BY 1 ) LIMIT 1;

答案 1 :(得分:3)

这是因为两个查询中都有b,主要查询和内部查询都位于in语句中。要解决此问题,您必须明确告诉hive您要引用的b。因此,将其更改为t1.b即可解决问题。