SQL JOIN: демонстрация всех типов соединений

При соединении по A.id = B.id INNER вернёт пары (2,2) и (4,4). LEFT добавит (1,NULL), (3,NULL); RIGHT — (NULL,6), (NULL,8); FULL объединит все шесть пар.

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

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

При соединении по A.id = B.id INNER вернёт пары (2,2) и (4,4). LEFT добавит (1,NULL), (3,NULL); RIGHT — (NULL,6), (NULL,8); FULL объединит все шесть пар.

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

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

Условие

Необходимо показать работу всех стандартных видов соединения таблиц и вывести результат для каждой операции.


A (id)
1
2
3
4

B (id)
2
4
6
8

select A.id, B.id
from …

Ответ

При соединении по A.id = B.id INNER вернёт пары (2,2) и (4,4). LEFT добавит (1,NULL), (3,NULL); RIGHT — (NULL,6), (NULL,8); FULL объединит все шесть пар.

Формы запросов:

SELECT A.id, B.id FROM A INNER JOIN B ON A.id = B.id;
SELECT A.id, B.id FROM A LEFT JOIN B ON A.id = B.id;
SELECT A.id, B.id FROM A RIGHT JOIN B ON A.id = B.id;
SELECT A.id, B.id FROM A FULL OUTER JOIN B ON A.id = B.id;
SELECT A.id, B.id FROM A CROSS JOIN B;

CROSS даст 16 комбинаций: каждый из {1,2,3,4} с каждым из {2,4,6,8}. Это состав результатов, не гарантированный порядок: для порядка нужен ORDER BY. Поддержка FULL OUTER JOIN зависит от СУБД; например, MySQL не поддерживает его напрямую.

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

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

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

Подробнее