FULL OUTER JOIN
Возвращает все строки из обеих таблиц. Где нет совпадения — NULL с соответствующей стороны.
SELECT ... FROM t1 FULL OUTER JOIN t2 ON t1.id = t2.t1_id;Объяснение
Пример
-- Найти несоответствия между двумя источниками данных
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;Связанные термины
Анекдоты по теме
Разработчик: — У меня запрос на 8 таблиц через JOIN, подзапросы, оконные функции внутри WHERE и GROUP BY на хэш с миллиардом строк. Он идёт 3 дня. Как оптимизировать? DBA: — TRUNCATE TABLE карьера_разработчика. И иди в менеджеры.
— Что такое foreign data wrapper? — Механизм для доступа к внешним источникам данных через SQL. — Примеры? — postgres_fdw: другой PostgreSQL сервер. — mysql_fdw: MySQL. — file_fdw: CSV файл. — Запросы работают как с обычными таблицами? — Да. JOIN между локальными и внешними данными. — Производительность? — Зависит от FDW. Pushdown предикатов — не всегда.
Таблица Users пишет таблице Orders: — Ты забыл про меня. Мы не связаны. Orders: — У тебя нет внешнего ключа ко мне. Users: — Значит, я буду NULL в твоей жизни. DBA: — Это LEFT JOIN, успокойтесь.