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