Sobes.tech
Назад к вопросам
Junior
25

Чем INNER JOIN отличается от OUTER JOIN?

Компании, где спрашивали
.wrk

Ответ от нейросети

sobes.tech AI

INNER JOIN возвращает только те строки, которые имеют совпадения в обеих таблицах по условию соединения. Если в одной из таблиц нет соответствующей записи, то эта строка не попадёт в результат.

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

  • LEFT OUTER JOIN — все строки из левой таблицы + совпадающие из правой;
  • RIGHT OUTER JOIN — все строки из правой таблицы + совпадающие из левой;
  • FULL OUTER JOIN — все строки из обеих таблиц, где нет совпадений — NULL.

Пример:

SELECT * FROM employees INNER JOIN departments ON employees.dept_id = departments.id;
-- вернёт только сотрудников, у которых есть отдел

SELECT * FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.id;
-- вернёт всех сотрудников, даже если у них нет отдела (в колонках departments будет NULL)