sql >> Database teknologi >  >> RDS >> Sqlserver

Forespørgsel:find rækker, der ikke hører til en liste over værdier

Problemet, jeg tror, ​​er, at du prøver at finde værdier fra dig i udtalelsen. Det, du skal gøre, er at omdanne din in-sætning til en tabel, og så kan du bestemme, hvilke værdier der er forskellige.

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)

Et bedre alternativ ville være at oprette en funktion med tabelværdi for at omdanne din kommaseparerede streng til en tabel. Jeg har ikke nogen kode ved hånden, men den burde være let at finde på Google. I så fald behøver du kun bruge nedenstående syntaks.

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

Håber dette hjælper



  1. MySQL-forespørgsel:Hvordan man korrekt identificerer og genoversætter kommaseparerede resultatværdier til de originale begreber ved hjælp af CONCAT_WS og COALESCE

  2. MySQL Ugyldig UTF8-tegnstreng ved import af csv-tabel

  3. Hvordan forespørger jeg, om der findes et databaseskema

  4. mysql_fetch_array() forventer, at parameter 1 er ressource, streng givet