Применение оператора INTERSECT для нахождения пересечения множеств

Оператор INTERSECT в SQL используется для нахождения пересечения между результатами двух или более запросов. Это означает, что он возвращает только те строки, которые присутствуют в обоих запросах. Вот как он работает:

INTERSECT

  • Возвращает строки, которые присутствуют в обоих наборах данных.

  • Удаляет дублирующиеся строки в результирующем наборе, то есть возвращает только уникальные строки, которые встречаются в обоих запросах.

SELECT column1 FROM table1
INTERSECT
SELECT column1 FROM table2;

В этом примере INTERSECT вернет только те строки из table1, которые также присутствуют в table2. Если table1 имеет строки A, B, C и table2 имеет строки B, C, D, результатом будет B, C.

Примеры использования

Основной пример

SELECT customer_id FROM orders_2023
INTERSECT
SELECT customer_id FROM orders_2024;

Этот запрос вернет customer_id, которые есть и в orders_2023, и в orders_2024.

Поиск общих продуктов в двух таблицах

SELECT product_id FROM products_sold_in_store1
INTERSECT
SELECT product_id FROM products_sold_in_store2;

Этот запрос вернет product_id, которые присутствуют и в store1, и в store2.

Особенности

  • INTERSECT работает только с запросами, которые возвращают одинаковое количество столбцов и совместимые типы данных.

  • Как и в случае с UNION, INTERSECT удаляет дублирующиеся строки в результирующем наборе.

Примечание

Если вам нужно сохранить дублирующиеся строки в результате пересечения, можно использовать оконные функции или другие подходы, так как INTERSECT сам по себе не поддерживает эту функциональность.

Last updated