Sobes.tech
Junior — Middle

Pouvez-vous expliquer la différence entre les jointures complètes (FULL JOIN) et les jointures internes (INNER JOIN) en SQL?

sobes.tech IA

Réponse de l'IA

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.