Назад к вопросам
Junior — Middle
82
Можете ли вы объяснить различие между полными соединениями (FULL JOIN) и внутренними соединениями (INNER JOIN) в SQL?
Ответ от нейросети
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.