Hive 配置单元-仅支持1个子查询表达式
我有3个表T1,T2,T3,id列。我想从T1中获取不在T2和T3中的idHive 配置单元-仅支持1个子查询表达式,hive,hiveql,Hive,Hiveql,我有3个表T1,T2,T3,id列。我想从T1中获取不在T2和T3中的id select id from T1 where id not in (select id from T2) and id not in (select id from T3). 但它会抛出错误,就像单个查询只支持1个子查询表达式一样。您可以使用左联接: select T1.id from T1 left join (select distinct id from T2) T2 on T2.id=T
select id from T1 where id not in (select id from T2) and id not in (select id from T3).
但它会抛出错误,就像单个查询只支持1个子查询表达式一样。您可以使用左联接:
select T1.id
from T1
left join (select distinct id from T2) T2 on T2.id=T1.id
left join (select distinct id from T3) T3 on T3.id=T1.id
where T2.id is NULL
and T3.id is NULL;
在子查询中使用distinct
,以确保在T2和T3中id不唯一时,联接不会与行相乘。您可以使用左联接:
select T1.id
from T1
left join (select distinct id from T2) T2 on T2.id=T1.id
left join (select distinct id from T3) T3 on T3.id=T1.id
where T2.id is NULL
and T3.id is NULL;
distinct
用于子查询,以确保在T2和T3中id不唯一的情况下,联接不会与行相乘。同样有2个子查询。我是否需要使用“T2.id和T3.id”或“T2.id或T3.id”@VanajaJayaraman此查询应该可以正常工作。T2.id为NULL,T3.id为NULL这有2个子查询。我是否需要使用“T2.id和T3.id”或“T2.id或T3.id”@VanajaJayaraman此查询应该可以正常工作。T2.id为NULL,T3.id为NULL