Вернуть строки предложения WHERE IN, даже если таблица не содержит данную строку - PullRequest
1 голос
/ 03 июля 2019

mytable содержит записи для id 1, 2, 3, 10, 12 и 20 и, в частности, не включает записи для id 5 и 15.

Как выполнить какой-либо запростакие как:

SELECT id, id IN (1,5,10,15,20) AS status
FROM mytable
WHERE id IN (1,5,10,15,20);

и возвращаемые записи:

id  status
1   true
5   false
10  true
15  false
20  true

Если бы была какая-то другая таблица, я мог бы просто присоединить внешнее соединение к mytable, но его нет.Следующее, конечно, не сработает, но есть ли какая-то вымышленная таблица, к которой я могу присоединиться?

SELECT id, isnull(mytable.id) AS status
FROM *
LEFT OUTER JOIN mytable
WHERE id IN (1,5,10,15,20);

1 Ответ

1 голос
/ 03 июля 2019

Вы можете создать производную таблицу в предложении FROM:

SELECT i.id, (t.id is not null) AS status
FROM (SELECT 1 as id UNION ALL SELECT 5 UNION ALL SELECT 10 UNION ALL SELECT 15 UNION ALL SELECT 20
     ) i LEFT JOIN
     mytable t
     ON i.id = t.id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...