Domanda

Come posso ottenere la differenza set di due set di risultati?

Di 'Ho un set di risultati (una sola colonna in ogni):

result1:
'a'
'b'
'c'

result2:
'b'
'c'

Voglio meno ciò che è in RESULT1 da risultato2: risultato1 - risultato2 tale che esso è uguale a:

 difference of result1 - result2:
 'a'
È stato utile?

Soluzione

Per eseguire risultato1 - risultato2, si può aderire con risultato1 risultato2, e solo gli elementi di output che esistono in risultato1. Ad esempio:

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

Si noti che non è un insieme differenza , e non sarà voci di uscita in result2 che non esistono in risultato1. E 'ambientato sottrazione .

Vedere anche: versione Web archive'd delle pertinenti post sul blog .

Altri suggerimenti

Se si desidera che le cose in result1 che non sono in result2, che dire:

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: se result1 è un sottoinsieme di result2 poi le query precedente restituirà un insieme vuoto (non si mostreranno le cose in result2 che non sono in result1) in modo che non siano insieme differenza, ma possono essere utili anche ( probabilmente è più efficiente rispetto alla outer join).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top