Назад к вопросам
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)