Чем отличается INNER JOIN от FULL JOIN?

INNER JOIN возвращает совпавшие пары строк, а FULL OUTER JOIN также сохраняет строки без пары с обеих сторон, заполняя отсутствующие поля значениями NULL.

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

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

INNER JOIN оставляет только пары строк, удовлетворяющие условию соединения. FULL JOIN, или FULL OUTER JOIN, дополнительно возвращает несовпавшие строки обеих таблиц, подставляя NULL в поля отсутствующей стороны. Повторяющиеся ключи могут размножать строки в обоих вариантах; JOIN не означает автоматическое удаление дублей.

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

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

INNER JOIN возвращает пары строк двух таблиц, для которых условие соединения истинно. Если строка не нашла соответствия на другой стороне, она не попадет в результат.

FULL JOIN, полная запись — FULL OUTER JOIN, возвращает все совпавшие пары и дополнительно строки без соответствия с обеих сторон. У таких строк поля отсутствующей стороны заполняются значениями NULL.

Предположим, в таблице a есть уникальные ключи 1 и 2, а в таблице b — 2 и 3:

SELECT a.id AS a_id, b.id AS b_id
FROM a
INNER JOIN b ON a.id = b.id;

В результате будет одна пара: (2, 2). Если заменить INNER JOIN на FULL OUTER JOIN, получатся три пары: (1, NULL), (2, 2) и (NULL, 3). Порядок этих строк без ORDER BY не гарантирован.

Есть несколько важных нюансов. Во-первых, соединение работает со строками, а не с уникальными множествами ключей. Если одному значению соответствуют две строки слева и три справа, соединение по этому значению создаст шесть пар.

Во-вторых, сравнение NULL = NULL не является истинным, поэтому обычное равенство не соединяет такие ключи друг с другом. В-третьих, фильтр в WHERE после полного соединения может убрать добавленные строки с NULL и изменить смысл результата.

INNER JOIN подходит, когда нужны только найденные соответствия. FULL JOIN полезен для сверки двух источников и поиска расхождений в обе стороны. Поддержку полного соединения и его синтаксис проверяют для выбранной СУБД.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку