Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Abfrage:Zeilen finden, die nicht zu einer Werteliste gehören

Ich glaube, das Problem ist, dass Sie versuchen, Werte von Ihnen in Aussagen zu finden. Was Sie tun müssen, ist, Ihre in-Anweisung in eine Tabelle umzuwandeln, und dann können Sie feststellen, welche Werte unterschiedlich sind.

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)

Eine bessere Alternative wäre, eine Tabellenwertfunktion zu erstellen, um Ihre durch Kommas getrennte Zeichenfolge in eine Tabelle umzuwandeln. Ich habe keinen Code zur Hand, aber er sollte bei Google leicht zu finden sein. In diesem Fall müssten Sie nur die folgende Syntax verwenden.

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

Hoffe das hilft