В этом учебном материале вы узнаете, как использовать SQL оператор MINUS с синтаксисом и примерами.
Описание
SQL оператор MINUS используется для возврата всех строк в первом операторе SELECT, которые не возвращаются вторым оператором SELECT. Каждый оператор SELECT будет определять набор данных. Оператор MINUS извлечет все записи из первого набора данных, а затем удалит из результатов все записи из второго набора данных.
MINUS запрос
Пояснение: MINUS запрос вернет записи в синей заштрихованной области. Это записи, которые существуют в наборе SELECT 1, а не в наборе SELECT 2.
Каждый оператор SELECT в MINUS запросе должен иметь одинаковое количество полей в наборе результатов с одинаковыми типами данных.
Синтаксис
Синтаксис для оператора MINUS в SQL.
FROM tables
[WHERE conditions]
MINUS
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
Параметры или аргумент
- expression1, expression2, expression_n
- Столбцы или расчеты, которые вы хотите получить
- tables
- Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана хотя бы одна таблица
- WHERE conditions
- Необязательный. Это условия, которые должны быть выполнены для выбора записей
Примечание
- В обоих операторах SELECT должно быть одинаковое количество выражений.
- Соответствующие выражения должны иметь одинаковый тип данных в запросе SELECT. Например: expression1 должен иметь одинаковый тип данных как в первом, так и во втором операторе SELECT
Пример - с одним выражением
Ниже приведен пример SQL оператора MINUS, в котором есть одно поле с одинаковым типом данных.
1 2 3 4 5 |
SELECT supplier_id FROM suppliers MINUS SELECT supplier_id FROM orders; |
Этот SQL пример MINUS возвращает все значения supplier_id, которые находятся в таблице suppliers, а не в таблице orders. Это означает, что если бы значение supplier_id существовало в таблице suppliers, а также существовало в таблице orders, то значение supplier_id не появилось бы в этом наборе результатов.
Пример - использование оператора ORDER BY
Ниже приведен пример оператора MINUS, в котором используется оператор ORDER BY.
1 2 3 4 5 6 7 8 9 10 |
SELECT supplier_id, supplier_name FROM suppliers WHERE supplier_id > 2000 MINUS SELECT company_id, company_name FROM companies WHERE company_id > 1000 ORDER BY 2; |
В этом SQL примере оператора MINUS, поскольку имена столбцов в двух операторах SELECT различаются, более выгодно ссылаться на столбцы в предложении ORDER BY по их положению в наборе результатов. В этом примере мы отсортировали результаты по supplier_name / company_name в порядке возрастания, как обозначено ORDER BY 2
.
Поля supplier_name / company_name находятся в позиции № 2 в наборе результатов.