Оператор для наборов данных EXCEPT советы и хитрости Oracle
Платформа Oracle не поддерживает оператор EXCEPT. Однако в этой системе есть альтернативный оператор для работы с наборами данных — MINUS, который имеет аналогичную функциональность.
SELECT инструкция MINUS;
Предложения MINUS DISTINCT и MINUS ALL не поддерживаются. Платформа Oracle не поддерживает использование MINUS в запросах в следующих ситуациях.
- Запросы содержат столбцы с типами данных LONG, BLOB, CLOB, BFILE или VARRAY.
- Запросы содержат предложение FOR UPDATE.
- Запросы содержат выражения с использованием коллекций TABLE.
Если первый запрос в операторе для наборов данных содержит какие-либо выражения в списке отбора элементов, включите предложения AS и присвойте этим выражениям псевдонимы. Кроме того, только последний запрос оператора работы с наборами может содержать предложение ORDER BY.
Например, можно сгенерировать список идентификаторов складов (stores), для которых нет записей в таблице продаж (sales).
SELECT
stor_id
FROM stores MINUS;
SELECT
stor_id
FROM sales;
Команда MINUS функционально сходна с запросом NOT IN. Следующий запрос возвращает те же результаты, что и предыдущий.
SELECT
stor_id
FROM stores
WHERE stor_id NOT IN
(SELECT stor_id FROM sales);