Подтвердить что ты не робот

Минус против исключения в ORACLE/SQL Server

MINUS - это операция набора SQL, которая выбирает элементы из первой таблицы, а затем удаляет строки, которые также возвращаются вторым оператором SELECT в Oracle. И в SQL Server мы можем использовать EXCEPT, чтобы делать то же самое.

При переносе моего проекта с oracle на SQL Server я заметил разницу. Если в первом наборе результатов нет записей, минус приводит к набору результатов второго оператора SELECT. Но в SQL Server EXCEPT ничего не возвращает. Что я могу сделать в этом случае? Я переношу свой проект и хочу выполнять ту же самую функцию минус в SQL Server.

Спасибо за помощь

4b9b3361

Ответ 1

Нет никакой разницы между Oracle MINUS и SQL Server EXCEPT.

Они предназначены для того, чтобы делать то же самое.

Ответ 2

Это проверит набор результатов любой из первого запроса, затем запустит исключение, если есть результат. Если он не выполняет только второй запрос.

IF EXISTS (SELECT NULL
           FROM ... <first query criteria>
           WHERE ...)
BEGIN
    SELECT ... <first query>
    EXCEPT 
    SELECT ... <second query>
END
ELSE
SELECT ... <second query>