Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Consulta:encontre linhas que não pertencem a uma lista de valores


O problema que eu acredito é que você está tentando encontrar valores de você na declaração. O que você precisa fazer é transformar sua declaração em uma tabela e então você pode determinar quais valores são diferentes.
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)

Uma alternativa melhor seria criar uma função com valor de tabela para transformar sua string delimitada por vírgula em uma tabela. Não tenho nenhum código à mão, mas deve ser fácil de encontrar no Google. Nesse caso, você só precisaria usar a sintaxe abaixo.
select
 id
from
 dbo.SplitStringToTable('2,3,6,7')
where
 not exists (select 1 from Tab where Col = id)

Espero que isto ajude