1
votes

Comment obtenir des lignes ayant des valeurs inhabituelles dans deux tables en SQL?

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


5 commentaires

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'était A1, A2, B1, B2 mais il n'y a pas de lignes où B1 a une valeur de 10 . 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.


3 Réponses :


1
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes

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
                 );


0 commentaires