Sobes.tech
Back to questions
Senior
5

Какие виды JOIN ты знаешь и в чём их отличие?

Companies where asked
OZONOZON

Answer from AI

sobes.tech AI

Основные виды JOIN в SQL и их отличия:

  • INNER JOIN — возвращает только те записи, у которых есть совпадения в обеих таблицах по условию соединения.

  • LEFT JOIN (LEFT OUTER JOIN) — возвращает все записи из левой таблицы и совпадающие записи из правой. Если совпадений нет, поля правой таблицы будут NULL.

  • RIGHT JOIN (RIGHT OUTER JOIN) — наоборот, возвращает все записи из правой таблицы и совпадающие из левой.

  • FULL JOIN (FULL OUTER JOIN) — возвращает все записи из обеих таблиц, совпадающие и не совпадающие, с NULL в местах отсутствия данных.

  • CROSS JOIN — декартово произведение двух таблиц, возвращает все возможные комбинации строк.

Пример:

-- INNER JOIN
SELECT * FROM A INNER JOIN B ON A.id = B.a_id;

-- LEFT JOIN
SELECT * FROM A LEFT JOIN B ON A.id = B.a_id;

-- RIGHT JOIN
SELECT * FROM A RIGHT JOIN B ON A.id = B.a_id;

-- FULL JOIN
SELECT * FROM A FULL JOIN B ON A.id = B.a_id;

-- CROSS JOIN
SELECT * FROM A CROSS JOIN B;

Выбор JOIN зависит от того, какие данные нужно получить и как обрабатывать отсутствующие совпадения.