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

时间:2011-11-18 13:41:31

标签: 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;

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

1 个答案:

答案 0 :(得分:7)

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