2013-02-18 9 views
5

sto usando Hive 0.9.0 e sto cercando di eseguire la query cioèHive più subquery

`SELECT a.id, b.user FROM (SELECT...FROM a_table) a, (SELECT...FROM b_table) b WHERE a.date = b.date;` 

ma restituisce l'errore loop"(...) + non corrisponde ingresso .... ". Hive supporta più subquery in FROM proprio come Oracle DB?

risposta

6

Più subqueries consentito nell'alveare.

Ho provato con il codice seguente, funziona.

select * from (select id from test where id>10) a 
join (select id from test where id>20) b on a.id=b.id; 

Si prega di inviare il codice esatto in modo che io possa dare la soluzione pertinente.

+0

grazie, Balaswamy! Ho già fatto la query con JOIN proprio come nell'esempio –

1

join subqueries è supportato Assolutamente.

Penso che il problema chiave sia che usi SELECT...FROM.

La sintassi corretta è SELECT * FROM

SELECT a.id, b.user 
FROM 
(SELECT * FROM a_table) a 
JOIN (SELECT * FROM b_table) b ON a.date = b.date; 
+0

presumo che ... sia inteso come stenografia per "alcuni campi" – MikeKulls

0

Se si desidera ottenere il prodotto cartesiano completo prima di applicare la WHERE clausola, invece:

SELECT a.id, b.user FROM (SELECT...FROM a_table) a, (SELECT...FROM b_table) b WHERE a.date = b.date; 

si dovrebbe usare 'unirsi' nel mezzo , ovvero

SELECT a.id, b.user FROM (SELECT...FROM a_table) a join (SELECT...FROM b_table) b WHERE a.date = b.date; 

precedente è non ammissibile in modalità rigorosa.