Pregunta

¿Cómo puedo obtener la diferencia de conjuntos de dos conjuntos de resultados?

decir que tengo un conjunto de resultados (sólo uno en cada columna):

result1:
'a'
'b'
'c'

result2:
'b'
'c'

Quiero menos lo es en resultado1 por result2: resultado1 - result2 tal que es igual a:

 difference of result1 - result2:
 'a'
¿Fue útil?

Solución

Para realizar resultado1 - result2, puede unirse con resultado1 result2, y sólo los elementos de salida que existen en resultado1. Por ejemplo:

SELECT DISTINCT result1.column
FROM result1 LEFT JOIN result2 ON result1.column = result2.column
WHERE result2.column IS NULL

Tenga en cuenta que no es un conjunto diferencia , y no elementos de salida en result2 que no existen en resultado1. Se fija sustracción .

Ver también: versión archive'd web de entrada de blog relevante.

Otros consejos

Si quieres que las cosas en result1 que no están en result2, ¿qué pasa con:

SELECT distinct result1
FROM t1 
WHERE result1 NOT IN (select distinct result2 from t2);

O:

SELECT distinct result
from t1 t
where NOT EXISTS (select 1 from t2 where result2 = t.result1)

NOTA: Si result1 es un subconjunto de result2 entonces las consultas anterior devolverá un conjunto vacío (no se mostrarán en result2 cosas que no están en result1) para que no sean diferencia de conjuntos, pero pueden ser útiles también ( probablemente es más eficiente que la combinación externa).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top