Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

T-SQL:Wie werden Werte in der Werteliste ausgewählt, die NICHT IN der Tabelle enthalten sind?

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 frühere Versionen können Sie etwas Ähnliches mit einer abgeleiteten Tabelle UNION ALL machen -ing die Konstanten.

/*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)

Oder wenn Sie nur die nicht vorhandenen (wie der Titel andeutet) und nicht die in der Frage angegebenen genauen Ergebnisse wünschen, können Sie dies einfach tun

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