Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie:znajdź wiersze, które nie należą do listy wartości

Uważam, że problem polega na tym, że próbujesz znaleźć wartości od siebie w oświadczeniu. To, co musisz zrobić, to przekształcić swoje oświadczenie w tabelę, a następnie możesz określić, które wartości są różne.

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)

Lepszą alternatywą byłoby utworzenie funkcji wycenianej w tabeli, która zamieni Twój ciąg oddzielony przecinkami w tabelę. Nie mam pod ręką żadnego kodu, ale powinien być łatwy do znalezienia w Google. W takim przypadku wystarczy użyć poniższej składni.

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

Mam nadzieję, że to pomoże



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz funkcję partycji w SQL

  2. Jak rozpoznać, które tabele zajmują najwięcej miejsca w bazie danych SQL Server 2005?

  3. Wdrażać RDL z VS2013 na serwer raportów Sql 2008?

  4. Zapytanie SQL do zsumowania danych

  5. Traktuj kolumnę jako inny typ do sortowania