Минус против исключения в ORACLE/SQL Server
MINUS - это операция набора SQL, которая выбирает элементы из первой таблицы, а затем удаляет строки, которые также возвращаются вторым оператором SELECT в Oracle. И в SQL Server мы можем использовать EXCEPT, чтобы делать то же самое.
При переносе моего проекта с oracle на SQL Server я заметил разницу. Если в первом наборе результатов нет записей, минус приводит к набору результатов второго оператора SELECT. Но в SQL Server EXCEPT ничего не возвращает. Что я могу сделать в этом случае? Я переношу свой проект и хочу выполнять ту же самую функцию минус в SQL Server.
Спасибо за помощь
Ответы
Ответ 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>