我正在使用MS SQL Server 2008 R2,并且我有一个电子表格插入到用户表的查询中的电子邮件列表。在列表中的821封电子邮件中,它返回了759行。有没有简单的方法让它返回不在表格中的邮件?我只有对数据库的读取权限,因此无法使用电子邮件列表创建表格 - 只会得到结果。下面是我用来获取在那里这些邮件列表中查询的简化版本:SQL获取项目不在列表中
select *
from UserTbl
where username in ('email1','email2','email3',...'email821')
我能想出一个Unix外壳的解决方案,但它会更加有用知道该怎么办它在MS SQL中。我实际上发现了一些接近于来自stackoverflow的解决方案(“T-SQL:如何选择值列表中的值不在表中?”),但它似乎并没有为我工作(为我的需要,我只想那些没有在表输出)的列表:
SELECT username,
CASE
WHEN EXISTS(SELECT * FROM UsersTbl tu WHERE E.email = tu.username) THEN 'Exist'
ELSE 'Not Exist'
END AS
FROM (VALUES('email1'),('email2'),('email3'),('email4')) E(email)
这给了我,当我运行查询错误“‘从’关键字附近有语法错误”。另外,我在Google上搜索上面使用的VALUES关键字的描述,并没有发现任何有用的信息。
如果任何人都可以帮助我,这将不胜感激。
感谢, 本
在这两个版本我得到的错误“消息156,15级,状态1,第6行 附近的关键字 '价值' 不正确的语法。“VALUES是否允许将列表视为一个表格? –
http://www.sqlfiddle.com/#!3/4c4a1/1 –
@BanAtman你的问题被标记为SQL Server 2008.你确定你是?SQL Server 2008的(或更好) –