Я хочу объединить две таблицы, которые копируют поведение левого соединения, если значение равно NULL, и поведение внутреннего соединения, если значение NOT NULL. Например, для таблиц:
t1(val) AS (VALUES (NULL)),
t2(val) AS (VALUES ('a'), ('b'))
Объединение вернет одну строку со значениями (NULL,NULL)
(согласно левому соединению). Для столов:
t1(val) AS (VALUES ('c')),
t2(val) AS (VALUES ('a'), ('b'))
Никакие строки не будут возвращены (согласно внутреннему соединению). Для столов:
t1(val) AS (VALUES ('a')),
t2(val) AS (VALUES ('a'), ('b'))
Будет возвращена одна строка со значениями ('a','a')
(для каждого типа объединения).
Какой самый эффективный способ сделать это?
РЕДАКТИРОВАТЬ: Как часть максимальной эффективности, я ищу запрос, который не постфильтровать (то есть использовать предложение WHERE
).