Supposons que j'ai un tableau a avec les colonnes A1 , A2 , A3 , A4 et le tableau b avec colonnes B1 , B2 , B3 , B4 .
Je veux trouver des enregistrements qui ont des valeurs différentes dans la colonne A1 , A2 et B1 , B2
Ex.
SELECT A1,A2 FROM A EXCEPT SELECT B1,B2 FROM B;
J'ai essayé:
A1 A2 A3 A4 B1 B2 B3 B4 12 10 10 12 12 10 10 12 14 14 10 12 15 10 10 12 15 10 10 10 15 10 10 10 IT SHOULD RETURN 14 14 10 10
Cependant, il est retourné sur A1 , A2 colonnes au lieu de toutes les colonnes
3 Réponses :
utiliser la jointure gauche
select a.* from tableA a
left join tbaleB b
on a.A1=b.B1 and a.A2=b.B2 and a.A3=b.B3 and a.A4=b.B4
where b.B1 is null
Vous pouvez essayer ci-dessous en utilisant la jointure gauche
select * from tableA left join tableB on A1=B1 and A2=B2 where B1 is null and B2 is null
J'utiliserais n'existe pas :
select a.*
from a
where not exists (select 1
from b
where a.a1 = b.b1 and a.a2 = b.b2
);
Pourquoi cries-tu?
-_-. . . . . .
Je me trompe peut-être, mais - pour autant que je sache - vous voulez comparer la ligne 1 dans A avec la ligne 1 dans B et ainsi de suite. Sans un tri explicite, cela n'est pas possible. Y a-t-il plus de colonnes?
Je ne peux pas vraiment comprendre comment l'OP obtient le résultat recherché. Il n'y a pas de lignes avec les valeurs
14, 14, 10, 10. Je pensais peut-être que c'étaitA1, A2, B1, B2mais il n'y a pas de lignes oùB1a une valeur de10 code>. Vraiment pas sûr, étant donné que le résultat attendu n'a pas d'en-tête.Vous souhaitez probablement qu'il renvoie
14 14 10 12, en fonction des données que vous avez fournies.