2014-12-22 32 views
11

我正在尝试使用配置单元进行子查询选择。如何在配置单元中的select语句中编写子查询

在FOOS表有以下栏目:

foo1, 
foo2, 
foo3_input 

就是我想要的

select foo1, foo2, foo3 from foos; 

是什么,我会执行

select foo1, foo2, foo3_input from foos; 

用于一行中的每个foo3我想执行以下查询

foo3 = select bar1 from bars where (foo3_input) between val1 and val2; 

有构造此查询任何可能的方式?

回答

0

蜂巢版本0.13.0

select 
    a.foo1, 
    a.foo2, 
    b.bar1 
from foos a, bars b 
where a.foo3_input between b.val1, b.val2; 
1

“Hive不支持WHERE子句中的IN,EXISTS或子查询。” 看到这个https://issues.apache.org/jira/browse/HIVE-1799

的看到这个地方在蜂巢https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SubQueries#LanguageManualSubQueries-SubqueriesintheWHEREClause

+0

感谢您的联系!你能给我任何想法来解决上述问题吗? – brisk

3
select 
    a.foo1, 
    a.foo2, 
    b.bar1 
from 
(
    (select foo1, foo2, foo3_input from foos) a 
    left outer join 
    (select bar1, foo3_input from bars) b 
    on a.foo3_input = b.foo3_input 
)tmp 
where b.foo3_input between a.foo1, a.foo2 
; 
条款

[编辑]

select 
    a.foo1, 
    a.foo2, 
    b.bar1 
from 
(
    (select foo1, foo2, foo3_input from foos) a 
    full outer join 
    (select bar1, val1, var2 from bars) b 

)tmp 
where a.foo3_input between b.val1, b.val2 
; 
+0

感谢您的回答@JimmyZhang。 foo3_input不属于酒吧表。 – brisk

+0

你能告诉我表格的结构吗? @brisk –

+0

在酒吧表中有以下列bar1,bar2,val1,val2 – brisk

相关问题