2012-01-07 13 views
8

Sto utilizzando il database PostgreSQL. Voglio ottenere i valori di una colonna da una tabella escludendo i valori presenti in un'altra tabella.selezionare i valori da una tabella in cui i valori di esclusione in un'altra tabella

select id from mytable where exclude(select id from another table) 

In primo tavolo disponibile id:

101.102.103.104.105

Nella seconda tabella disponibile id:

101.104

Voglio risultato:

102,103,105 (excluded values exist in second table) 

Come scrivere query per questo?

risposta

16

Prova

select id 
from mytable 
where id not in (select id from another_table); 

o

select id 
from mytable 
except 
select id 
from another_table; 
+2

Solo una nota a margine: se 'ìd' può essere nullo in 'another_table', la prima query non funzionerà. In tal caso, è necessario aggiungere un 'dove id non nullo' alla sottoselezione –

8

Utilizzando un LEFT JOIN un IS NULL è anche un'opzione:

SELECT 
    id 
FROM 
    mytable 
    LEFT JOIN another_table ON mytable.id = another_table.id 
WHERE 
    another_table.id IS NULL; 
Problemi correlati