sql >> Database >  >> RDS >> Sqlserver

T-SQL:Hoe selecteer ik waarden in de waardelijst die NIET IN de tabel staan?

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

Voor eerdere versies kunt u iets soortgelijks doen met een afgeleide tabel UNION ALL - de constanten.

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

Of als u alleen de niet-bestaande wilt (zoals geïmpliceerd door de titel) in plaats van de exacte resultaten die in de vraag worden gegeven, kunt u dit eenvoudig doen

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


  1. Hoe koppel ik een hele dag aan een datetime-veld?

  2. Voeg twee tabellen samen en filter ze met de where-clausule

  3. Het ophalen van gegevens van RDS geeft AttributeError:'sqlalchemy.cimmutabledict.immutabledict' object heeft geen kenmerk 'setdefault'

  4. Niet-gevangen uitzondering 'PDOException' met bericht 'Er is geen actieve transactie'?