列出不在where子句而不在表中的项目

时间:2013-10-31 12:22:27

标签: sql sql-server sql-server-2008

我有一个需要创建的用户名列表。我可以查询表格以找出存在的内容,但如何查询列表中的哪些项目不存在?

select username from aspnet_Users where UserName in (a,b,c,d, etc)

但如果仅存在ad,我可以使用哪种SQL来返回bc

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

-- Included a CTE here just so this example is runnable; 
-- You don't need it in your query
WITH aspnet_Users (UserName) AS
(
    SELECT 'a' UNION
    SELECT 'd'
)
SELECT
    n.UserName
FROM
    aspnet_Users e
RIGHT JOIN 
    (VALUES ('b'), ('c')) AS n(UserName)
    ON 
    e.UserName = n.UserName

基本上,您将现有表格加入到您正在检查的用户名中,并且仅在没有匹配项的情况下返回结果。

结果:

UserName
--------
b
c

(2 row(s) affected)