MS SQL Server 2008 R2を使用していて、ユーザーテーブルに対するクエリに挿入したスプレッドシートからの電子メールのリストがあります。リスト内の821通の電子メールのうち、759行が返されました。テーブルにないメールを返す簡単な方法はありますか?私はデータベースへの読み取りアクセスしか持っていないので、メーリングリストでテーブルを作成することはできません-結果を得るだけです。これは、そこにあった電子メールのリストを取得するために使用したクエリの簡略化されたバージョンです。
select *
from UserTbl
where username in ('email1','email2','email3',...'email821')
Unixシェルソリューションを思いつくこともできますが、MSSQLでそれを行う方法を知っているとはるかに便利です。私は実際に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キーワードの説明を探し回っていましたが、何も役に立ちませんでした。
誰かがこれについて私を助けることができればそれは大いにありがたいです。
ありがとう、ベン