Какое соединение SQL нужно использовать, чтобы вернуть все строки и из левой, и из правой таблицы, подставляя NULL при отсутствии пары?

Нужен FULL OUTER JOIN: он возвращает совпавшие пары и непарные строки обеих таблиц. На отсутствующей стороне поля заполняются NULL.

Короткий ответ

Что ответить на собеседовании

Нужен FULL OUTER JOIN: он возвращает совпавшие пары и непарные строки обеих таблиц. На отсутствующей стороне поля заполняются NULL.

Подробный разбор

Ответ с пояснениями

Нужен FULL OUTER JOIN: он возвращает совпавшие пары и непарные строки обеих таблиц. На отсутствующей стороне поля заполняются NULL.

Пример:

SELECT l.id AS left_id, r.id AS right_id
FROM left_table AS l
FULL OUTER JOIN right_table AS r ON r.id = l.id;

Если по условию соединения несколько совпадений, результат содержит все подходящие пары, а не одну строку на ключ. Фильтр WHERE по полю отсутствующей стороны может удалить непарные строки, поэтому его нужно выбирать внимательно. Не все СУБД поддерживают FULL OUTER JOIN напрямую; тогда требуется корректная комбинация соединений.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее