2014-12-22 38 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

相關問題