Gymterview
junior

Какие существуют типы JOIN?

Существует пять основных типов соединений, каждый из которых определяет, какие строки попадают в результат при наличии или отсутствии совпадений.

Тип JOIN Результат Симметричный
INNER JOIN Только строки с совпадениями в обеих таблицах Да
LEFT OUTER JOIN Все строки из левой + совпадения из правой (или NULL) Нет
RIGHT OUTER JOIN Все строки из правой + совпадения из левой (или NULL) Нет
FULL OUTER JOIN Все строки из обеих таблиц, NULL где нет совпадений Да
CROSS JOIN Декартово произведение — каждая строка с каждой Да

INNER JOIN

Возвращает только те записи, для которых найдено совпадение в обеих таблицах. Порядок таблиц не важен — оператор симметричный. Это самый часто используемый тип соединения.

LEFT (OUTER) JOIN

Возвращает все записи из левой таблицы. Для строк, не имеющих совпадения в правой таблице, столбцы правой таблицы заполняются значением NULL. Порядок таблиц важен.

RIGHT (OUTER) JOIN

Зеркальное отражение LEFT JOIN — возвращает все записи из правой таблицы. На практике используется редко, так как любой RIGHT JOIN можно переписать как LEFT JOIN, поменяв таблицы местами.

FULL (OUTER) JOIN

Возвращает все записи из обеих таблиц. Где совпадений нет, соответствующие столбцы заполняются NULL. Полезен для поиска «несвязанных» записей в обеих таблицах.

CROSS JOIN

Каждая строка одной таблицы объединяется с каждой строкой другой. Если в первой таблице M строк, а во второй N, результат содержит M x N строк. Используется для генерации всех возможных комбинаций (например, все пары товар-магазин).

На собеседовании: рисунок с диаграммами Венна для каждого типа JOIN — лучший способ объяснить разницу. Частая ошибка — не понимать разницу между LEFT JOIN и INNER JOIN, когда в правой таблице нет совпадения.