Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Заявка:намерете редове, които не принадлежат към списък със стойности

Проблемът според мен е, че се опитвате да намерите стойности от вас в изявлението. Това, което трябва да направите, е да превърнете своя in оператор в таблица и след това можете да определите кои стойности са различни.

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)

По-добра алтернатива би била да създадете функция с таблични стойности, която да превърне вашия низ, разделен със запетая, в таблица. Нямам никакъв код подръка, но трябва да е лесен за намиране в Google. В такъв случай трябва да използвате само синтаксиса по-долу.

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

Надявам се това да помогне



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв е най-добрият начин да тествате програмно връзката със SQL Server?

  2. Как да използвам case оператор във функция със скаларни стойности в SQL?

  3. Как да направите CONTAINS() на две колони на SQL за търсене в индекс на пълен текст

  4. Запазете байт[] в база данни на SQL Server от C#

  5. Какви са най-добрите практики за използване на GUID като първичен ключ, по-специално по отношение на производителността?