Есть ли лучшие способы выбрать, какие идентификаторы не существуют? - PullRequest
2 голосов
/ 18 ноября 2011

Есть ли лучший способ достичь такого же результата?

У меня есть список идентификаторов (не в таблице). Мне нужно найти, какой из идентификаторов не существует в данной таблице. Я смог добиться нужных результатов, выполнив следующую инструкцию 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 выглядят беспорядочно, особенно когда список идентификаторов увеличивается. Еще одно ограничение заключается в том, что у меня нет прав на возможность создавать временные таблицы, поэтому решения такого типа будут невозможны.

1 Ответ

7 голосов
/ 18 ноября 2011
SELECT InlineID
FROM   (VALUES (11111),
               (22222),
               (33333)) T(InlineID)
EXCEPT
SELECT ID
FROM   MyTable  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...