2017-05-24 1 views
0

Tableau A:requête pour sortie non les données existantes

id Name 
    1 a 
    2 b 
    3 c 
    4 d 
    5 e 

Tableau B:

id Name 
3 c 
4 d 
5 e 

Ici, id est la clé primaire reliée au tableau B.

je besoin d'une sortie comme celui-ci : -

id 
1 
2 

Cela signifie, quels identifiants dans le tableau A ne sont pas présentes dans le tableau B

Répondre

3

Utilisez l'opérateur EXCEPT:

select id from tableA 
except 
select id from tableB 
1

En utilisant l'instruction Not in.

Essayez ceci: -

Select id from TableA 
where id not in (Select id from TableB); 
1

Vous pouvez utiliser un left join, qui conservera tous les dossiers sur le côté gauche et les associer à null si aucun enregistrement correspondant est disponible sur le côté droit. De cette façon, vous pouvez filtrer les colonnes du côté droit d'être nul pour obtenir le résultat souhaité

select t1.id 
from tableA t1 
left join 
     tableB t2 
on  t1.id = t2.id 
where t2.id is null 
1

Utilisez NOT EXISTS dans la clause WHERE

SELECT id FROM TableA A 
    WHERE NOT EXISTS(SELECT 1 FROM TableB B WHERE A.id = B.Id) 
0

Vous pouvez utiliser minus:

select * from tableA 
minus 
select * from tableB 
+0

'MINUS' n'est pas standard et n'est disponible que dans certains SGBD (Oracle, Teradata, ...). SQL Server utilise la norme 'EXCEPT' à la place. –