При соединении по A.id = B.id INNER вернёт пары (2,2) и (4,4). LEFT добавит (1,NULL), (3,NULL); RIGHT — (NULL,6), (NULL,8); FULL объединит все шесть пар.
SQL JOIN: демонстрация всех типов соединений
При соединении по 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 не поддерживает его напрямую.