SQL-сервер EXCEPT

В этом руководстве вы узнаете, как использовать оператор EXCEPT SQL Server для вычитания набора результатов запроса из другого набора результатов другого запроса.

Введение в оператор EXCEPT SQL Server

SQL Server EXCEPT сравнивает наборы результатов двух запросов и возвращает отдельные строки из первого запроса, которые не выводятся вторым запросом. Другими словами, EXCEPT вычитает набор результатов одного запроса из другого.

Ниже показан синтаксис SQL Server EXCEPT:

query_1
EXCEPT
query_2

Ниже приведены правила объединения наборов результатов двух запросов в приведенном выше синтаксисе:

  • Количество и порядок столбцов должны быть одинаковыми в обоих запросах.
  • Типы данных соответствующих столбцов должны быть одинаковыми или совместимыми.

На следующем рисунке показана операция EXCEPT для двух наборов результатов T1 и T2:

SQL Server EXCEPT иллюстрация

На этой иллюстрации:

  • Набор результатов T1 включает 1, 2 и 3.
  • Набор результатов T2 включает 2, 3 и 4.

За исключением T1 и T2 возвращается 1, что является отдельной строкой из набора результатов T1, которая не отображается в наборе результатов T2.

Пример оператора EXCEPT SQL Server

См. следующие таблицы products и order_items из образца базы данных :

A) Простой пример EXCEPT

В следующем примере оператор EXCEPT используется для поиска продуктов, по которым нет продаж:

SELECT
    product_id
FROM
    production.products
EXCEPT
SELECT
    product_id
FROM
    sales.order_items;

SQL Server пример КРОМЕ

В этом примере первый запрос возвращает все продукты. Второй запрос возвращает продукты, которые продаются. Таким образом, в набор результатов входят только продукты, которые не продаются.

B) ЗА ИСКЛЮЧЕНИЕМ примера ORDER BY

Чтобы отсортировать набор результатов, созданный оператором EXCEPT, вы добавляете предложение ORDER BY в последний запрос. Например, следующий пример находит продукты, у которых не было продаж, и сортирует продукты по их идентификатору в порядке возрастания:

SELECT
    product_id
FROM
    production.products
EXCEPT
SELECT
    product_id
FROM
    sales.order_items
ORDER BY 
 product_id;

SQL Server EXCEPT с примером ORDER BY

В этом руководстве вы узнали, как использовать SQL Server EXCEPT для объединения наборов результатов двух запросов.

Мирослав С.

Автор статей, ИБ-специалист