INTERSECT
в PostgreSQL позволяет получить пересечение результатов двух или более запросов, возвращая только те строки, которые присутствуют во всех наборах данных.
Использование INTERSECT
Пример получения списка имен, которые есть и в таблице пользователей, и в таблице клиентов:
SELECT name FROM users
INTERSECT
SELECT name FROM customers;
Этот запрос вернет только те имена, которые встречаются в обеих таблицах.
Пересечение нескольких запросов
Пример получения email-адресов, которые присутствуют одновременно в трех таблицах:
SELECT email FROM users
INTERSECT
SELECT email FROM customers
INTERSECT
SELECT email FROM employees;
Запрос вернет email-адреса, которые есть во всех трех таблицах.
Отличие от UNION
и EXCEPT
UNION
объединяет все строки, удаляя дубликаты.INTERSECT
возвращает только те строки, которые есть во всех результатах.EXCEPT
исключает строки второго запроса из первого.