Будет 8 строк: четыре пары (2,2), одна (1,NULL), две (NULL,NULL) и одна (4,NULL). NULL не совпадает с NULL через обычное равенство SQL.
Как LEFT JOIN соединяет повторы и NULL в двух таблицах?
Будет 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 нельзя обещать конкретный порядок восьми строк.