EXCEPT оператор SQLite

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

Описание

SQLite оператор EXCEPT используется для возврата всех строк в первом операторе SELECT, которые не возвращаются вторым оператором SELECT. Каждый оператор SELECT будет определять набор данных. Оператор EXCEPT извлечет все записи из первого набора данных, а затем удалит из результата все записи из второго набора данных.

Except запрос

EXCEPT

Пояснение: Запрос EXCEPT вернет записи в синей заштрихованной области. Это записи, которые существуют в наборе данных select1, а не в наборе данных select2.

Каждый оператор SELECT в запросе EXCEPT должен иметь одинаковое количество полей в наборах результатов с одинаковыми типами данных.

Синтаксис

Синтаксис оператора EXCEPT в SQLite:

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 в SQLite эквивалентен оператору MINUS в Oracle.

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

Рассмотрим пример оператора EXCEPT в SQLite, который возвращает одно поле с одинаковым типом данных.

Например:

В этом примере оператора EXCEPT возвращаются все значения departments, которые находятся в таблице departments, а не в таблице employees. Это означает, что если значение department_id существует в таблице departments, а также в таблице employees, значение department_id не будет отображаться в результатах запроса EXCEPT.

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

Далее рассмотрим пример запроса EXCEPT в SQLite, который возвращает более одного столбца.

Например:

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

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

Наконец, давайте посмотрим, как использовать ORDER BY в запросе EXCEPT в SQLite.

Например:

В этом примере EXCEPT, поскольку имена столбцов в двух операторах SELECT различаются, более выгодно ссылаться на столбцы в операторе ORDER BY по их позиции в результирующем наборе. В этом примере мы отсортировали результаты по supplier_id / company_id в порядке убывания, как обозначено в ORDER BY 1 DESC.

Поля supplier_id / company_id находятся в позиции №1 в результирующем наборе.