Минус против Разницы в ORACLE / SQL Server - PullRequest
19 голосов
/ 06 апреля 2011

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

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

Спасибо за вашу помощь

Ответы [ 2 ]

34 голосов
/ 06 апреля 2011

Нет разницы между Oracle MINUS и SQL Server, КРОМЕ.

Они предназначены для того же.

1 голос
/ 06 апреля 2011

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

IF EXISTS (SELECT NULL
           FROM ... <first query criteria>
           WHERE ...)
BEGIN
    SELECT ... <first query>
    EXCEPT 
    SELECT ... <second query>
END
ELSE
SELECT ... <second query>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...