Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: left, outer, join

Как работает LEFT OUTER JOIN при наличии условий?

Вопрос проверяет глубокое понимание того, как условия влияют на результат внешних соединений.

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

LEFT OUTER JOIN всегда сохраняет строки из левой таблицы.
Условия в ON влияют только на сопоставление строк.
Условия в WHERE могут отфильтровать результат.
Неправильное размещение условий меняет семантику запроса.
Корректное использование требует понимания порядка выполнения.

Длинный ответ

Чтобы корректно использовать LEFT OUTER JOIN, нужно четко разделять условия соединения и условия фильтрации.

Базовый принцип LEFT OUTER JOIN

Определение:
LEFT OUTER JOIN возвращает все строки из левой таблицы и соответствующие строки из правой таблицы или NULL, если совпадений нет.

Условия в ON

Условия в ON:

  1. Определяют, какие строки считаются совпадающими.

  2. Не удаляют строки из левой таблицы.

  3. Могут ограничивать набор строк правой таблицы.

Пример:

LEFT JOIN payments p
ON o.id = p.order_id AND p.amount > 100

Условия в WHERE

Условия в WHERE:

  1. Применяются после выполнения JOIN.

  2. Могут удалить строки с NULL.

  3. Часто меняют поведение LEFT JOIN.

Типичная ошибка

Частая проблема:

  1. Ожидается сохранение всех строк слева.

  2. Условие пишется в WHERE.

  3. Результат неожиданно сужается.

Краткий вывод

LEFT OUTER JOIN корректно работает только при четком разделении условий: ON — для соединения, WHERE — для фильтрации результата.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • Postgres

    Postgres

Ключевые слова

#left

#outer

#join

Подпишись на Java Developer в телеграм