Sobes.tech
Back to questions
Middle
5

Чем отличается INNER JOIN от LEFT/RIGHT JOIN?

Companies where asked
Япоки

Answer from AI

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 сохраняют все строки из одной из таблиц, дополняя их данными из другой, если есть совпадения.