配置单元中的错误:对于存在/不存在运算符,子查询必须是相关的

时间:2018-08-09 12:33:11

标签: hadoop hive bigdata exists

select * from students1;

students1.name  students1.age   students1.gpa
fred    35  1.28
barney  32  2.32
shyam   32  2.32

select * from students2;
students1.name  students1.age
fred    35
barney  32

运行此查询时

select 
name,age from students1
where not exists
(select name,age from students2);

我遇到了以下错误

  

编译语句时出错:失败:SemanticException行39:22   SubQuery sq_1的定义中的SubQuery表达式“ age”无效   在第3:10行用作sq_1的存在(从学生2中选择姓名,年龄):   对于“存在/不存在”运算符,SubQuery必须相关。

2 个答案:

答案 0 :(得分:1)

错误消息已清除。使用exists / not exists时,子查询应该是相关的。

select name,age 
from students1 s1
where not exists (select 1
                  from students2 s2
                  where s1.name=s2.name and s1.age=s2.age
                 )

答案 1 :(得分:0)

您正在尝试实现查询的MINUS输出。不幸的是,它在Hive中不可用。

您可以在此处阅读HQL和SQL的限制。 HQL vs SQL

对于不存在的用法,本手册提供了很好的示例。 subqueries in hive