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);
Я получаю эту ошибку ниже
Error while compiling statement: FAILED: SemanticException line 39:22 Invalid SubQuery expression 'age' in definition of SubQuery sq_1 [ exists (select name,age from students2) ] used as sq_1 at Line 3:10: For Exists/Not Exists operator SubQuery must be Correlated.
Сообщение об ошибке ясное. Подзапрос должен быть коррелирован при использовании 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
)
Нет ли простого способа добиться этого, поскольку мне нужно писать запросы для сравнения данных между исходной и целевой таблицей?
Если у меня 100 столбцов, мне придется писать s1.x = s2.x и s1.a = s2.b .... как и в случае с 100 столбцами
Вы пытаетесь получить результат запроса MINUS
. В Hive это к сожалению недоступен.
Вы можете прочитать об ограничениях HQL и SQL здесь. HQL против SQL
Для использования не существует, в руководстве есть хороший пример. подзапросы в улье
что это означает 1