Разные варианты объединения таблиц в SQL

При равенстве id INNER JOIN даст 2 строки, LEFT — 4, RIGHT — 4, FULL — 6. CROSS JOIN даст 16 пар, потому что сочетает каждую строку A с каждой строкой B.

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

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

При равенстве id INNER JOIN даст 2 строки, LEFT — 4, RIGHT — 4, FULL — 6. CROSS JOIN даст 16 пар, потому что сочетает каждую строку A с каждой строкой B.

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

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

Условие

Необходимо продемонстрировать объединения двух таблиц с помощью всех основных типов JOIN: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN и CROSS JOIN. Для каждого запроса указать, какие строки окажутся в результате.

Даны две таблицы TableA и TableB:

TableA   | TableB
---------|---------
id       | id
---------|---------
1        | 2
2        | 4
3        | 6
4        | 8
SELECT TableA.id, TableB.id
FROM ...

Ответ

При равенстве id INNER JOIN даст 2 строки, LEFT — 4, RIGHT — 4, FULL — 6. CROSS JOIN даст 16 пар, потому что сочетает каждую строку A с каждой строкой B.

SELECT a.id, b.id FROM TableA a INNER JOIN TableB b ON a.id = b.id;
SELECT a.id, b.id FROM TableA a LEFT JOIN TableB b ON a.id = b.id;
SELECT a.id, b.id FROM TableA a RIGHT JOIN TableB b ON a.id = b.id;
SELECT a.id, b.id FROM TableA a FULL OUTER JOIN TableB b ON a.id = b.id;
SELECT a.id, b.id FROM TableA a CROSS JOIN TableB b;

INNER: (2,2), (4,4). LEFT дополнит (1,NULL), (3,NULL). RIGHT дополнит INNER парами (NULL,6), (NULL,8). FULL объединит все шесть пар. CROSS — все сочетания {1,2,3,4} × {2,4,6,8}. Без ORDER BY порядок строк не гарантируется; FULL поддерживается не каждой СУБД.

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

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

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

Подробнее