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

T-SQL:Hvordan vælger man værdier i værdilisten, der IKKE er i tabellen?

Til SQL Server 2008

SELECT email,
       CASE
         WHEN EXISTS(SELECT *
                     FROM   Users U
                     WHERE  E.email = U.email) THEN 'Exist'
         ELSE 'Not Exist'
       END AS [Status]
FROM   (VALUES('email1'),
              ('email2'),
              ('email3'),
              ('email4')) E(email)  

For tidligere versioner kan du gøre noget lignende med en afledt tabel UNION ALL -ing af konstanterne.

/*The SELECT list is the same as previously*/
FROM (
SELECT 'email1' UNION ALL
SELECT 'email2' UNION ALL
SELECT 'email3' UNION ALL
SELECT 'email4'
)  E(email)

Eller hvis du kun vil have de ikke-eksisterende (som antydet af titlen) i stedet for det nøjagtige resultatsæt givet i spørgsmålet, kan du blot gøre dette

SELECT email
FROM   (VALUES('email1'),
              ('email2'),
              ('email3'),
              ('email4')) E(email)  
EXCEPT
SELECT email
FROM Users


  1. Hvordan laver man en PostgreSQL-forespørgsel med where-in-klausul, som indeholder flere kolonner programmatisk?

  2. sletning af dubletter

  3. Sådan får du row_number i MySQL

  4. Hvordan kan OpenShift-beholder lære sit billed-id?