73 votes

T-SQL : Comment sélectionner dans une liste de valeurs des valeurs qui ne sont PAS dans la table ?

J'ai une liste d'adresses e-mail, certaines d'entre elles sont dans mon tableau, d'autres non. Je veux sélectionner tous les e-mails de cette liste, qu'ils soient dans la table ou non.

Je peux obtenir les utilisateurs dont les adresses e-mail sont dans la table comme ceci :
SELECT u.* FROM USERS u WHERE u.EMAIL IN ('email1', 'email2', 'email3')

Mais comment puis-je sélectionner dans cette liste des valeurs qui n'existent pas dans la table ?

De plus, comment puis-je sélectionner comme ceci :

E-Mail | Status
email1 | Exist  
email2 | Exist  
email3 | Not Exist  
email4 | Exist  

Merci d'avance.

0 votes

Voulez-vous dire T-SQL du serveur SQL de Microsoft ? Si oui, quelle version ?

1 votes

Oui, MS SQL Server. J'utilise à la fois 2005 et 2008 R2.

0 votes

D'accord, dans ce cas, je recommande la réponse de Martin Smith. J'ai posé la question parce que même SQL Server 2000 est encore beaucoup utilisé et sa réponse ne fonctionnerait pas dans ce cas.

0voto

Anju313 Points 11

Cela devrait fonctionner avec toutes les versions de SQL.

SELECT  E.AccessCode ,
        CASE WHEN C.AccessCode IS NOT NULL THEN 'Exist'
             ELSE 'Not Exist'
        END AS [Status]
FROM    ( SELECT    '60552' AS AccessCode
          UNION ALL
          SELECT    '80630'
          UNION ALL
          SELECT    '1611'
          UNION ALL
          SELECT    '0000'
        ) AS E
        LEFT OUTER JOIN dbo.Credentials C ON E.AccessCode = c.AccessCode

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X