Как заставить отсутствующее объединение в SQL? - PullRequest
0 голосов
/ 20 апреля 2020

Мне нужно оставить внешнее соединение двух таблиц, но я также всегда хочу иметь «несопоставленный» ряд. Пример:

left table:

|--------------|
| *c1* | *key* |
|--------------|
| a1   | a     |
|------|-------|
| b1   | b     |
|--------------|
right table:

|--------------|
| *c2* | *key* |
|--------------|
| a2   | a     |
|--------------|
expected result, joined by *key* column:

|-------------|
| *c1* | *c2* | 
|-------------|
| a1   | a2   |
|------|------|
| a1   | null | <- this row is needed
|------|------|
| b1   | null | <- in case there is no match, only one "value, null" row is needed
|-------------|

Какой лучший способ добиться этого? Желательно без использования distinct или union.

1 Ответ

2 голосов
/ 20 апреля 2020

Я думаю, вы хотите inner join и union all:

select l.c1, r.c2
from left l join
     right r
     on l.key = r.key
union all
select l.c1, null
from left l;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...