Назад к вопросам
Middle
6
Чем отличается INNER JOIN от LEFT/RIGHT JOIN?
Компании, где спрашивали
Япоки
Ответ от нейросети
sobes.tech AI
INNER JOIN возвращает только те строки, у которых есть совпадения в обеих таблицах по условию соединения. Если совпадений нет, строка не попадёт в результат.
LEFT JOIN (или LEFT OUTER JOIN) возвращает все строки из левой таблицы и соответствующие строки из правой. Если для строки из левой таблицы нет совпадения в правой, то поля правой таблицы будут заполнены NULL.
RIGHT JOIN (или RIGHT OUTER JOIN) — наоборот, возвращает все строки из правой таблицы и соответствующие из левой, с NULL там, где совпадений нет.
Пример:
SELECT * FROM A INNER JOIN B ON A.id = B.a_id; -- только совпадающие
SELECT * FROM A LEFT JOIN B ON A.id = B.a_id; -- все из A + совпадения из B
SELECT * FROM A RIGHT JOIN B ON A.id = B.a_id; -- все из B + совпадения из A
Таким образом, INNER JOIN фильтрует по совпадениям, а LEFT/RIGHT JOIN сохраняют все строки из одной из таблиц, дополняя их данными из другой, если есть совпадения.