Возвращать строки для запроса IN с ошибочными поисками, возвращающими NULL

Учитывая этот запрос:

SELECT a, b FROM c WHERE a IN ('v1', 'v2', 'v3');

Если стол c имел значения для v1 и v2, но не для v3, я бы получил результирующий набор из 2 строк. Есть ли способ, которым я могу выполнить тот же запрос (или тот, который дает тот же результат) при получении строки для каждой цели?

В этом случае я хотел бы получить 3 строки, 2 со значениями для 'v1' и 'v2' и одну со значением NULL.

1 ответ

Решение

Не уверен, что это будет работать на вашей конкретной СУБД, но вот как я бы подошел к этому:

select x.a, c.b
from (
  select 'v1' as a union all
  select 'v2' as a union all
  select 'v3' as a
) x
left outer join c on c.a = x.a

Создайте временную таблицу и используйте ее для левого соединения в нужной таблице.

Другие вопросы по тегам