2016-12-02 56 views
0

我有一個關於數據庫查詢的問題。請參考下表。從多列中查找列

Table : 1 
ID Country 
1 x 
2 y 
3 z 
4 k 


Table : 2 
eng fre fre1 fre2 
x x 
x1 k  y t 
x2   n  z 

Output Table 
id country 
1 x 
2 x1 
3 x2 
4 x1 

如何在Hive中實現此目的?

非常感謝您的幫助。

回答

1

你可以參加3次,但它可能會運行緩慢:因爲蜂巢沒有支點部

select a.id, coalesce(b.eng, c.eng, d.eng) as Country 
    from table_1 a 
     left join table_2 b on a.country=b.fre 
     left join table_2 c on a.country=c.fre1 
     left join table_2 d on a.country=d.fre2 
; 
+0

第一選項將不會在我的情況下工作。剩下的選項是我已經使用的第二個選項,但正如你所提到的,我有220萬條記錄,這就是爲什麼查詢需要永久執行。 –

+0

第一個查詢應該在Hive上工作,因爲Hive不支持它。支持子查詢,也支持coalesce()和max()。請嘗試運行它,它應該很好 – leftjoin

+0

這個'--pivot table2'只是一個註釋。 – leftjoin