sql >> Databasteknik >  >> RDS >> Sqlserver

T-SQL:Hur väljer man värden i värdelistan som INTE finns i tabellen?

För 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)  

För tidigare versioner kan du göra något liknande med en härledd tabell UNION ALL -ing av konstanterna.

/*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 om du bara vill ha de icke-existerande (som antyds av titeln) snarare än den exakta resultatuppsättningen som anges i frågan, kan du helt enkelt göra detta

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


  1. Modellera en grundläggande datastruktur för att hantera användare, trådar och inlägg

  2. Mysql CSV ladda infil

  3. Laravel sammanfogar med 3 bord

  4. Skillnaden mellan RDBMS och ORDBMS