有没有更好的方法来实现同样的结果?
我有一个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列表变大时。另一个限制是我没有权限创建临时表,因此无法使用这些类型的解决方案。
答案 0 :(得分:7)
SELECT InlineID
FROM (VALUES (11111),
(22222),
(33333)) T(InlineID)
EXCEPT
SELECT ID
FROM MyTable