Je ne sais pas comment encadrer cette question, alors demandez un exemple.
Dans la table ci-dessous, je souhaite trouver tous ces enregistrements qui ne sont pas définis avec type "A". Donc, de cette table, je veux découvrir l'enregistrement avec ID comme 2. P>
Tablea P>
+-----+ | ID2 | +-----+ | 1 | | 2 | | 3 | +-----+
3 Réponses :
Une méthode consiste à utiliser un avec la clause code> avec un compte conditionnel code>:
Vous pouvez utiliser un CTE pour sélectionner tous les identifiants associés à la valeur que vous souhaitez exclure.
Vous pouvez ensuite utiliser une sous-requête pour filtrer ces identifiants: P>
declare @TableA table (ID1 int, Type char(1))
insert into @TableA
values
(1, 'A')
,(1, 'B')
,(1, 'C')
,(2, 'B')
,(2, 'C')
,(3, 'A')
,(3, 'B')
,(3, 'C')
;with filteredIds
as
(
select
distinct ID1
from @TableA
where Type ='A'
)
select
*
from @TableA
where
ID1 not in (select id1 from filteredIds)
Vous pouvez utiliser avec un index sur Notez que cela trouve également des identifiants qui ne sont pas dans n'existe pas code>: tabla (id1, type) code>, c'est probablement le plus rapide méthode dans la plupart des cas. P> Tablea code> du tout. p> p>