Question

Comment puis-je obtenir la différence de jeu de deux ensembles de résultats?

que j'ai un ensemble de résultats (une seule colonne dans chaque):

result1:
'a'
'b'
'c'

result2:
'b'
'c'

Je veux moins ce qui est en result1 par result2: result1 - result2 tel qu'il est égal à:

 difference of result1 - result2:
 'a'
Était-ce utile?

La solution

Pour effectuer result1 - result2, vous pouvez rejoindre result1 avec result2, et seuls les éléments de sortie qui existent dans result1. Par exemple:

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

Notez que n'est pas un ensemble différence , et ne seront pas les éléments de sortie result2 qui n'existent pas dans result1. Ce jeu de soustraction .

Voir aussi: Version archive'd Web de blog concerné .

Autres conseils

Si vous voulez que les choses en result1 qui ne sont pas result2, qu'en est:

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

Ou:

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

REMARQUE: si result1 est un sous-ensemble de result2 alors les requêtes ci-dessus renvoie un ensemble vide (ils ne seront pas vous montrer les choses dans result2 qui ne sont pas result1), mais peuvent aussi être utiles si elles ne sont pas de différence jeu ( sans doute il est plus efficace que la jointure externe).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top