Возвращать строки для запроса 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
Создайте временную таблицу и используйте ее для левого соединения в нужной таблице.