2013-03-12 14 views
8

Sto cercando di creare una query SQL HIVE per trovare tutti i valori dalla tabella 1 che NON sono presenti nella tabella 2. Capisco che ho bisogno di utilizzare un join però io non riesco a capire come implementarlo per questa situazione ...HIVE verifica i dati dalla tabella 1 che è assente nella tabella 2

Grazie, James

ad esempio:

Table1 

url     number 
xe.com    5 
google.com   2 
ebay.co.uk   6 

Table2 

url     visits 
facebook.com   8 
google.com   4 
ebay.co.uk   15 

Così, per esempio la query dovrebbe restituire tutti i valori da Table1 che sono presente in Table2, ovvero

url     number   visits 
google.com   2    4 
ebay.co.uk   6    15 
+0

Stai andando ad avere per includere ulteriori informazioni se si desidera una risposta adeguata. Lo schema delle tabelle e il modo in cui si collegano insieme sarebbe un buon inizio. –

+0

Scusa se ho pensato che la domanda fosse abbastanza semplice da non richiedere alcuna informazione sullo schema dei dati. Ho modificato il post e incluso le informazioni :) – user2160581

+0

Fondamentalmente sto cercando un modo per fare un anti join ... – user2160581

risposta

14

UN SINISTRA UNISCI restituirà tutte le righe da Table1 indipendentemente dal fatto che esista o meno una corrispondenza. Nel caso in cui non ci sia una corrispondenza le colonne Table2 avranno il valore NULL - queste sono le righe che si desidera:

SELECT Table1.url, Table1.number 
FROM Table1 
LEFT OUTER JOIN Table2 ON Table1.url = Table2.url 
WHERE Table2.url IS NULL 
+0

Grazie per l'aiuto, ma non dovrebbe essere questo: SELECT Table1.url, Table1.number FROM Table1 LEFT JOIN Table2 ON Table1.url = Table2.url WHERE Table2.url IS NULL – user2160581

+0

@ user2160581 Sì, mi sono messo in testa e ho perso la riga 'FROM' durante la digitazione; risolto ora –

+0

e ai fini di HIVE che sto usando dovrebbe essere LEFT OUTER JOIN. GRAZIE :) – user2160581

Problemi correlati