Есть две таблицы

Рассмотрим виды JOIN и результат запроса select from t1 join t2 on t1.t = t2.t для таблиц:

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

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

Рассмотрим виды JOIN и результат запроса select from t1 <join> t2 on t1.t = t2.t для таблиц:

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

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

Условие

Есть две таблицы

tab1 id 1 2 3

tab2 id 1 1 2 2

Скажите количество строк в результирующей таблице при

  1. inner join
  2. left join
  3. cross join

*Таблица tab1 всегда слева

Ответ

Рассмотрим виды JOIN и результат запроса select * from t1 <join> t2 on t1.t = t2.t для таблиц:

t1.t
1
2
4
null
t2.t
1
3
null
null

CROSS JOIN — декартово произведение всех строк из t1 и t2, без условия соединения.

Результат будет 4 (строки t1) * 4 (строки t2) = 16 строк, например:

t1.t t2.t
1 1
1 3
1 null
1 null
2 1
2 3
... ...

INNER JOIN — возвращает строки, где условие t1.t = t2.t истинно.

Результат:

t1.t t2.t
1 1
null null

(так как null = null в SQL не считается равенством, но в некоторых СУБД с использованием IS NULL может быть иначе; обычно null не равен null)


LEFT JOIN — все строки из t1, и соответствующие из t2, если нет совпадения — NULL в столбцах t2:

t1.t t2.t
1 1
2 NULL
4 NULL
null NULL

RIGHT JOIN — все строки из t2, и соответствующие из t1, если нет совпадения — NULL в столбцах t1:

t1.t t2.t
1 1
NULL 3
NULL null
NULL null

FULL JOIN — объединяет LEFT и RIGHT JOIN, все строки из обеих таблиц, NULL там, где нет совпадений:

t1.t t2.t
1 1
2 NULL
4 NULL
null null
NULL 3
NULL null

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

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

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

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

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