Результат содержит 13 строк: девять пар (1, 1) и четыре пары (2, 2). Правые строки со значением 3 не попадут в LEFT JOIN.
Что возвращает 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].