SQL LEFT JOIN: все строки с более ранней датой

Запрос сохраняет все строки table1 и присоединяет каждую строку table2 с более ранней date_start. Одна строка слева может дать много строк результата.

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

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

Запрос сохраняет все строки table1 и присоединяет каждую строку table2 с более ранней date_start. Одна строка слева может дать много строк результата.

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

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

Условие

SELECT * FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.date_start > t2.date_start

Ответ

Запрос сохраняет все строки table1 и присоединяет каждую строку table2 с более ранней date_start. Одна строка слева может дать много строк результата.

Если подходящей даты справа нет, колонки t2 заполняются NULL. Это не выбор ближайшей предыдущей даты: для него нужна дополнительная логика, например ранжирование или LATERAL-подзапрос в поддерживающей СУБД.

Обычное сравнение с NULL не даёт совпадения. Физический алгоритм по одному тексту SQL не определяется: проверьте план, объёмы и индексы. SELECT * также может вернуть одноимённые колонки из обеих таблиц.

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

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

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

Подробнее