“不存在”不显示结果?

时间:2011-10-14 16:30:02

标签: tsql

SELECT a.samAccountName
FROM   activeIds AS a
WHERE  NOT EXISTS (SELECT *
                   FROM   #tmp1 AS b
                   WHERE  a.samAccountName = b.userID)
       AND a.samAccountName LIKE 'ysp%'
ORDER  BY a.samAccountName ASC;  
GO

我创建了一个临时表,用于将用户ID YSP0000填充到YSP9999。 我有一个已经填充了YSP ID的现有表(activeIds)。

我正在尝试输出现有表(activeIds)中不存在的YSP ID。

由于某种原因,YSP ID未显示,而是显示其他ID(例如ZSP)。

有没有办法让ID出现?

2 个答案:

答案 0 :(得分:1)

我相信您所寻找的不是NOT EXISTS,而是NOT IN。像这样:

select samAccountName
from activeIds
where samAccountId not in
(
    select badAccountIds
    from #temp1
)

这将选择ID不在临时表中的所有帐户名。

答案 1 :(得分:1)

您可以使用left outer join完成同样的事情。

select a.samAccountName
from activeIds a
   left outer join #tmp1 b on a.samAccountName = b.userID 
where b.userID is null  -- don't exist in #tmp1
      and a.samAccountName like 'ysp%'
order by a.samAccountName