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

T-SQL:come selezionare i valori nell'elenco dei valori che NON SONO NELLA tabella?

Per 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)  

Per le versioni precedenti puoi fare qualcosa di simile con una tabella derivata UNION ALL -ing le costanti.

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

O se vuoi solo quelli inesistenti (come suggerisce il titolo) piuttosto che il set di risultati esatto fornito nella domanda, puoi semplicemente farlo

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