2011-11-18 5 views
2

この同じ結果を得るためのより良い方法はありますか?存在しないIDを選択するより良い方法はありますか?

私はIDのリストを持っています(テーブルにはありません)。与えられたテーブルに存在しないIDを見つける必要があります。すなわち、同じ結果を達成するための簡単な方法があるようにあるべきかのようにそれは感じている、これは動作しますが

SELECT InlineID 
FROM (SELECT 11111 AS InlineID UNION ALL SELECT 22222 UNION ALL SELECT 33333) AS Ids 
LEFT OUTER JOIN MyTable ON Ids.InlineID = MyTable.ID 
WHERE MyTable.ID IS NULL; 

:私は、次のSQL文を実行することで探していた結果を達成することができました繰り返しのUNION ALLステートメントは、特にIDのリストが大きくなったときに、乱雑に見えます。もう1つの制約は、一時テーブルを作成する権限がないことです。そのようなソリューションのタイプは不可能です。

+0

RDBMSとは何ですか? –

+1

SQL Server 2008を示すタグが追加されました。 – carmbrester

答えて

7
SELECT InlineID 
FROM (VALUES (11111), 
       (22222), 
       (33333)) T(InlineID) 
EXCEPT 
SELECT ID 
FROM MyTable 
+0

チャンピオンのように動作し、少し綺麗にしています。ありがとうございます。 – carmbrester

+0

ハッ!あなたはそれをすることができたことを知らなかった!ヒントをありがとう! –

+0

@Martin Smith niceクエリなぜクエリに 'T(InlineID)'を追加したのですか? – LoneWOLFs

関連する問題