В этом учебном материале вы узнаете, как использовать Oracle оператор MINUS с синтаксисом и примерами.
Описание
Oracle оператор MINUS используется для возврата всех строк первого запроса SELECT, не возвращаемых вторым SELECT. Каждый запрос SELECT будет определять набор данных. Оператор MINUS возвращает все записи из первого набора данных, а затем из результатов удалит все записи из второго набора данных.
Пояснение: Запрос MINUS вернет записи в серой затененной области. Эти записи, которые существуют в SELECT 1, а не в SELECT 2.
Каждый SELECT в запросе MINUS должны иметь одинаковое количество полей в результирующих наборах с одинаковыми типами данных.
Синтаксис
Синтаксис оператора MINUS в Oracle/PLSQL:
FROM tables
[WHERE conditions]
MINUS
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
Параметры или аргументы
expression1, expression2, ... expression_n
Столбцы или расчеты, которые вы хотите получить.
tables
Таблицы из которых вы хотите получить записи.
WHERE conditions
Необязательный. Условия, которые должны быть выполнены для выбранных записей.
Примечание
В обоих SELECT должно быть одинаковое количество expression и иметь схожие типы данных.
Пример с одним полем
Ниже приведен пример Oracle оператора MINUS, который возвращает одно поле с тем же типом данных:
1 2 3 4 5 |
SELECT supplier_id FROM suppliers MINUS SELECT supplier_id FROM orders; |
Этот Oracle пример MINUS возвращает все значение поля supplier_id, которое находятся в таблице suppliers, и нет в таблице orders. Что означает, если значение supplier_id существовало в таблице suppliers, а также существовала в таблице orders, то значение supplier_id не появится в этом результирующем наборе.
Пример использования ORDER BY
Ниже приведен пример оператора MINUS, который использует ORDER BY:
1 2 3 4 5 6 7 8 |
SELECT supplier_id, supplier_name FROM suppliers WHERE state = 'Nevada' MINUS SELECT company_id, company_name FROM companies WHERE company_id <= 400 ORDER BY 2; |
В этом примере MINUS, так как имена столбцов в двух запросах SELECT отличаются, то в операторе ORDER BY выгоднее ссылаться на положение столбцов в результирующем наборе. В этом примере, мы отсортировали результаты по supplier_name / company_name в порядке возрастания, как это обозначено в ORDER BY 2.
Поля supplier_name / company_name находятся в позиции # 2 в результирующем наборе.