我正在使用 MS SQL Server 2008 R2,并且我有一个来自电子表格的电子邮件列表,我将其插入到针对用户表的查询中。在列表中的 821 封电子邮件中,它返回了 759 行。有没有简单的方法让它返回那些不在表格中的电子邮件?我只有对数据库的读取权限,因此无法使用电子邮件列表创建表 - 只能获取结果。这是我用来获取那些电子邮件列表的查询的简化版本:
select *
from UserTbl
where username in ('email1','email2','email3',...'email821')
我可以想出一个 Unix shell 解决方案,但是知道如何在 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)
当我运行查询时,这给了我错误“关键字'FROM'附近的语法不正确”。顺便说一句,我在谷歌上四处寻找上面使用的 VALUES 关键字的描述,但没有发现任何有用的信息。
如果有人可以帮助我解决这个问题,将不胜感激。
谢谢,本