MySQL: differenza di due set di risultati
-
01-10-2019 - |
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'
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).