有没有更好的方法来选择哪些ID不存在?

car*_*ter 2 sql sql-server-2008

有没有更好的方法来实现同样的结果?

我有一个ID列表(不在表中).我需要找到给定表中不存在哪些ID.通过执行以下SQL语句,我已经能够实现我正在寻找的结果:

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;
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但感觉应该有一种更简单的方法来实现相同的结果,即重复的UNION ALL语句看起来很混乱,尤其是当ID列表变大时.另一个限制是我没有能够创建临时表的权限,因此这些类型的解决方案将无法实现.

Mar*_*ith 7

SELECT InlineID
FROM   (VALUES (11111),
               (22222),
               (33333)) T(InlineID)
EXCEPT
SELECT ID
FROM   MyTable  
Run Code Online (Sandbox Code Playgroud)