sql >> Databáze >  >> RDS >> Sqlserver

T-SQL:Jak vybrat hodnoty v seznamu hodnot, které NEJSOU V tabulce?

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

U předchozích verzí můžete udělat něco podobného s odvozenou tabulkou UNION ALL -ing konstant.

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

Nebo pokud chcete pouze ty neexistující (jak vyplývá z názvu) spíše než přesnou sadu výsledků uvedenou v otázce, můžete to jednoduše udělat

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


  1. SQL Server 2005 - Pořadí vnitřních spojení

  2. Problém s výkonem tabulky MySQL MyISAM byl znovu přezkoumán

  3. Výpis dostupných uživatelů k určitému datu

  4. Postgresql -- vyčištění HTML tagů uprostřed řetězce