Как LEFT JOIN соединяет повторы и NULL в двух таблицах?

Будет 8 строк: четыре пары (2,2), одна (1,NULL), две (NULL,NULL) и одна (4,NULL). NULL не совпадает с NULL через обычное равенство SQL.

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

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

Будет 8 строк: четыре пары (2,2), одна (1,NULL), две (NULL,NULL) и одна (4,NULL). NULL не совпадает с NULL через обычное равенство SQL.

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

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

Условие

t1(num) содержит 1, 2, 2, NULL, NULL, 4; t2(num) содержит 2, 2, NULL, 5. Выполнен SELECT a.num, b.num FROM t1 a LEFT JOIN t2 b ON a.num = b.num;. Сколько будет строк и какие пары появятся? Порядок не задан.

Ответ

Будет 8 строк: четыре пары (2,2), одна (1,NULL), две (NULL,NULL) и одна (4,NULL). NULL не совпадает с NULL через обычное равенство SQL.

Две двойки слева соединяются с двумя двойками справа, получая 2 × 2 = 4 пары. Каждая несовпавшая левая строка сохраняется один раз с NULL справа. Две пары (NULL,NULL) возникли не из совпадения NULL, а из сохранения двух левых строк. Правая 5 не попадает в результат LEFT JOIN. Без ORDER BY нельзя обещать конкретный порядок восьми строк.

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

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

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

Подробнее