我正在使用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的(或更好) –