EXCEPT SQL Server

В этом учебном пособии вы узнаете, как использовать оператор EXCEPT в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

Оператор EXCEPT SQL Server (Transact-SQL) используется для возврата всех строк в первом операторе SELECT, которые не возвращаются вторым оператором SELECT. Каждая инструкция SELECT будет определять набор данных. Оператор EXCEPT будет извлекать все записи из первого набора данных, а затем удалять из результатов все записи из второго набора данных.

Запрос Except

except

Пояснение: Запрос EXCEPT вернет записи в серой затененной области. Это записи, которые существуют в SELECT 1, а не в SELECT 2.
Каждый оператор SELECT в запросе EXCEPT должен иметь одинаковое количество полей в наборах результатов с похожими типами данных.

Синтаксис

Синтаксис оператора EXCEPT в SQL Server (Transact-SQL):

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
EXCEPT
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

Параметры или аргументы

expressions - столбцы или вычисления, которые вы хотите сравнить между двумя операторами SELECT. Они не должны быть одинаковыми полями в каждом из операторов SELECT, но соответствующие столбцы должны быть с похожими типами данных.
tables - таблицы, из которых вы хотите получить записи. Должна быть хотя бы одна таблица, перечисленная в предложении FROM.
WHERE conditions - необязательный. Условия, которые должны быть выполнены для выбранных записей.

Примечание

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

Пример с одним выражением

Давайте рассмотрим пример оператора EXCEPT в SQL Server (Transact-SQL), который возвращает одно поле с тем же типом данных.
Например:

Этот пример оператора EXCEPT возвращает все значения product_id, которые находятся в таблице products, а не в таблице inventory. Это означает, что если значение product_id существует в таблице products и также существует в таблице inventory, значение product_id не будет отображаться в результатах запроса EXCEPT.

Пример с несколькими выражениями

Затем давайте рассмотрим пример запроса EXCEPT в SQL Server (Transact-SQL), который возвращает более одного столбца.
Например:

В этом примере запрос EXCEPT возвращает записи в таблице contacts с именем contact_id, last_name и first_name, которое не соответствует значению employee_id, last_name и first_name в таблице employees.

Пример использования ORDER BY

Наконец, давайте рассмотрим, как использовать предложение ORDER BY в запросе EXCEPT в SQL Server (Transact-SQL).
Например:

В этом примере EXCEPT, поскольку имена столбцов различаются между двумя операторами SELECT, более выгодно ссылаться на столбцы в предложении ORDER BY по их позиции в наборе результатов. В этом примере мы отсортировали результаты по supplier_name / company_name в порядке возрастания, как обозначено ORDER BY 2.
В поле supplier_name / company_name находятся позиции № 2 в результирующем наборе.