Что возвращает LEFT JOIN при дублировании строк в таблицах

Результат содержит 13 строк: девять пар (1, 1) и четыре пары (2, 2). Правые строки со значением 3 не попадут в LEFT JOIN.

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

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

Результат содержит 13 строк: девять пар (1, 1) и четыре пары (2, 2). Правые строки со значением 3 не попадут в LEFT JOIN.

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

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

Условие

В примере присутствуют две таблицы — t1 и t2, содержащие повторяющиеся значения. Нужно определить, какой набор строк будет получен после выполнения следующего запроса.

t1  t2
1  1
1  1
1  1
2  3
2  3
  2
  2

select * from t1 left join t2 on t1.x = t2.x

Ответ

Результат содержит 13 строк: девять пар (1, 1) и четыре пары (2, 2). Правые строки со значением 3 не попадут в LEFT JOIN.

В t1 три единицы, в t2 тоже три: каждая левая совпадает с каждой правой, итого 3 × 3 = 9. Две двойки слева совпадают с двумя двойками справа, давая 2 × 2 = 4.

У всех левых строк есть совпадения, поэтому строк с NULL справа нет. LEFT JOIN не удаляет дубликаты и не сохраняет несовпавшие строки правой таблицы. Порядок без ORDER BY не гарантирован. Ответ предполагает именно показанные столбцы: t1 = [1,1,1,2,2], t2 = [1,1,1,3,3,2,2].

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

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

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

Подробнее