Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Requête :rechercher des lignes qui n'appartiennent pas à une liste de valeurs

Le problème, je crois, est que vous essayez de trouver des valeurs de vous dans la déclaration. Ce que vous devez faire est de transformer votre instruction in en un tableau, puis vous pourrez déterminer quelles valeurs sont différentes.

create table #temp
(
value int
)

insert into #temp values 1
insert into #temp values 2
insert into #temp values 3
insert into #temp values 4

select
 id
from
 #temp
where
 not exists (select 1 from Tab where Col = id)

Une meilleure alternative serait de créer une fonction table pour transformer votre chaîne délimitée par des virgules en table. Je n'ai pas de code sous la main, mais il devrait être facile à trouver sur Google. Dans ce cas, vous n'auriez qu'à utiliser la syntaxe ci-dessous.

select
 id
from
 dbo.SplitStringToTable('2,3,6,7')
where
 not exists (select 1 from Tab where Col = id)

J'espère que cela vous aidera