2012-01-07 19 views
8

Estoy usando la base de datos PostgreSQL. Quiero obtener los valores de una columna de una tabla al excluir los valores existentes en otra tabla.seleccionar valores de una tabla donde excluir valores en otra tabla

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

En primer lugar la tabla de ID disponibles:

101.102.103.104.105

En la segunda tabla disponibles Identificación:

101.104

Quiero resultado:

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

¿Cómo escribir la consulta para esto?

Respuesta

16

Trate

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

Sólo una nota: si 'ìd' puede ser nulo en 'another_table', la primera consulta no funcionará. En ese caso, un 'where id no es nulo' debe agregarse a la sub-selección –

8

Usando una combinación izquierda un IS NULL es también una opción:

SELECT 
    id 
FROM 
    mytable 
    LEFT JOIN another_table ON mytable.id = another_table.id 
WHERE 
    another_table.id IS NULL; 
Cuestiones relacionadas