Чем отличаются INNER JOIN, LEFT JOIN и FULL OUTER JOIN? Приведите примеры из практики.
Как отвечать ▾Скрыть подсказку ▴
Как отвечать: Объясните на конкретных таблицах (заказы и клиенты), что происходит с несовпавшими строками в каждом случае, и упомяните типичную ошибку — размножение строк при JOIN по дублирующемуся ключу.
Пример сильного ответа
INNER JOIN возвращает только совпадающие строки из обеих таблиц. LEFT JOIN — все строки из левой таблицы и совпадения из правой, если совпадений нет — NULL. FULL OUTER JOIN — все строки из обеих таблиц, с NULL там, где нет совпадений. В моей практике при сверке заказов и оплат моя задача — выявить расхождения. INNER JOIN показывает только оплаченные заказы. LEFT JOIN — все заказы с данными об оплате. FULL OUTER JOIN — и заказы без оплат, и оплаты без заказов. Такой подход позволяет найти около 200 расхождений на 50 тысячах транзакций.