Sobes.tech
Back to questions
Junior — Middle
83

Можете ли вы объяснить различие между полными соединениями (FULL JOIN) и внутренними соединениями (INNER JOIN) в SQL?

Answer from AI

sobes.tech AI

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

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

Пример:

-- Таблица A
id | name
1  | Alice
2  | Bob

-- Таблица B
id | city
2  | London
3  | Paris

-- INNER JOIN
SELECT A.id, A.name, B.city FROM A INNER JOIN B ON A.id = B.id;
-- Результат:
-- 2 | Bob | London

-- FULL JOIN
SELECT A.id, A.name, B.city FROM A FULL JOIN B ON A.id = B.id;
-- Результат:
-- 1 | Alice | NULL
-- 2 | Bob   | London
-- 3 | NULL  | Paris

Таким образом, INNER JOIN фильтрует только совпадающие записи, а FULL JOIN сохраняет все записи из обеих таблиц, заполняя отсутствующие значения NULL.