sql >> Base de Datos >  >> RDS >> Sqlserver

T-SQL:¿Cómo seleccionar valores en la lista de valores que NO ESTÁN EN la tabla?

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

Para versiones anteriores, puede hacer algo similar con una tabla derivada UNION ALL -ing las constantes.

/*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 si desea solo los que no existen (como se indica en el título) en lugar del conjunto de resultados exacto dado en la pregunta, simplemente puede hacer esto

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