JOINСредний
FULL OUTER JOIN
Возвращает все строки из обеих таблиц. Где нет совпадения — NULL с соответствующей стороны.
Синтаксис
SELECT ... FROM t1 FULL OUTER JOIN t2 ON t1.id = t2.t1_id;
Объяснение
FULL OUTER JOIN = LEFT JOIN + RIGHT JOIN (без дублей). Используется редко, но полезен для нахождения несоответствий между двумя таблицами.
Пример использования: сравнить данные в двух таблицах и найти строки, которые есть только в одной.
Пример
-- Найти несоответствия между двумя источниками данных SELECT a.id AS id_a, b.id AS id_b FROM source_a a FULL OUTER JOIN source_b b ON a.id = b.id WHERE a.id IS NULL OR b.id IS NULL;
Связанные термины
Анекдоты по теме
— Почему INNER JOIN похож на интроверта? — Он общается только с теми, кого уже знает.
Встречаются INNER JOIN и LEFT JOIN. LEFT JOIN говорит: — Ты слишком строгий: если нет совпадения — сразу вон. А я даже пустоту оставляю. INNER JOIN: — Да, зато у меня нет дырок в отчётах.
LEFT JOIN и INNER JOIN спорят, кто важнее. LEFT JOIN: — Я беру всех, даже одиноких. INNER JOIN: — Зато я беру только тех, кто нашёл пару. FULL OUTER JOIN из угла: — А я беру вообще всех и никого не выбрасываю. CROSS JOIN: — Любители. Я перемножаю всех со всеми. Все смотрят на CROSS JOIN с ужасом.