Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

T-SQL:Как да изберете стойности в списъка със стойности, които НЕ са В таблицата?

За 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)  

За предишни версии можете да направите нещо подобно с производна таблица UNION ALL -на константите.

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

Или ако искате само несъществуващите (както се подразбира от заглавието), а не точния набор от резултати, даден във въпроса, можете просто да направите това

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSRS Report Manager задава ниво на мащабиране по подразбиране

  2. Как да насоча таблица за година в SQL?

  3. Търсенето на пълен текст е инсталирано или не

  4. Трикове за непрекъснато подобряване на мониторинга на базата данни

  5. Как да възстановя към друга база данни в SQL Server?