Разность запросов
Функция

Исключение из результата первого запроса записей, принадлежащих результату второго запроса.

Спецификация
     
< разность запросов >::=
[(] составной запрос EXCEPT [ALL | DISTINCT]
[CORRESPONDING [BY (имя столбца [, …]) ] ] составной запрос [)]
Синтаксические правила
  1. Все < составные запросы > одной < разности запросов > должны иметь одинаковое количество совместимых по типу данных столбцов (различными могут быть только имена столбцов).

  2. Описание конструкции CORRESPONDING приведено в пункте «Объединение запросов».

Общие правила
  1. < Разность запросов > получается следующим образом:

    • результат инициализируется пустой таблицей;

    • в результат вставляются все строки, которые есть в первом < составном запросе > и которых нет во втором < составном запросе >.

  2. Если указан DISTINCT, из результата исключаются дубликаты строк.

  3. Если указан ALL, каждая запись выдается в том количестве, в котором она содержится в первом множестве, минус суммарное количество в остальных множествах.

    Пусть есть две таблицы:

    tab1   tab2
      1       2
      2       4
      3       5
      4       7
      3
    select * from tab1 except all select * from tab2; select * from tab1 except distinct select * from tab2;

    или

    или

    table tab1 except all table tab2;table tab1 except distinct table tab2;
    |1 |
    |3 |
    |3 |
    |1 |
    |3 |
    
  4. Отсутствие ALL и DISTINCT равнозначно DISTINCT.

  5. В < разности запросов > < GROUP BY-спецификация > может использоваться только один раз. Она располагается в последнем операторе SELECT и применяется ко всему результату. Столбцы упорядочения в этом случае задаются только путем указания их порядковых номеров.

  6. I-й столбец результата < разности запросов > будет именован только в том случае, если среди исходных i-х столбцов есть хотя-бы один именованный столбец. В качестве имени результирующего столбца будет взято имя первого именованного столбца из операндов комбинированного запроса.