🟢 Введение
INTERSECT — это оператор множеств в SQL, который возвращает только те строки, которые присутствуют в обоих результатах двух SELECT-запросов.
Работает по принципу: только общее, без дубликатов.
🔤 Написание
Синтаксис:
Условия:
Количество и порядок столбцов должны совпадать
Типы данных должны быть совместимыми
Дубликаты автоматически удаляются
🔄 Где часто используется
Поиск пересечений между двумя наборами данных
Определение общих клиентов, сотрудников, заказов
Сравнение архивов и текущих записей
Объединение результатов, где важны совпадения
Проверка логических пересечений в аналитике
🧪 10 Примеров использования INTERSECT с пояснениями
1️⃣ Простое пересечение
Сотрудники, которые есть и в текущем штате, и в истории должностей.
2️⃣ INTERSECT по имени
Имена, которые встречаются и среди сотрудников, и среди клиентов.
3️⃣ INTERSECT с WHERE-фильтрацией
Отделы с высокими зарплатами, находящиеся в локации 1700.
4️⃣ INTERSECT с подзапросом
Клиенты, у которых есть и заказы, и открытые жалобы.
5️⃣ INTERSECT с приведением типов
Пересечение заказов и платежей по совпадающим идентификаторам.
6️⃣ INTERSECT в представлении
Поставщики, которые активны и сертифицированы.
7️⃣ INTERSECT и NULL — не сравнивается!
⚠️ Не вернёт строку — в SQL NULL = NULL всегда FALSE.
8️⃣ INTERSECT с выражениями
Менеджеры, которые также являются сотрудниками в тех же отделах.
9️⃣ INTERSECT с дубликатами (будут убраны)
Результат — уникальные job_id (дубликаты удаляются).
🔟 INTERSECT и ORDER BY (только в конце)
Сортировка по результатам пересечения.
🧩 Заключение
INTERSECT — это способ выделить общее между двумя наборами данных.
Он работает чётко: если строка есть в обоих SELECT-запросах — она попадёт в результат. Если нет — будет отброшена.
💡 Советы:
Используйте
INTERSECT, когда важно найти точные совпаденияУбедитесь, что SELECT-запросы возвращают одинаковое количество столбцов
Если нужна проверка совпадений между таблицами —
INTERSECTидеален
🔜 Следующая статья:
Оператор MINUS в Oracle SQL — как вычитать один результат запроса из другого