Доступные версии документации
Разность запросов
Функция

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

Спецификация
     
<разность запросов>::=
[(] составной запрос 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-х столбцов есть хотя-бы один именованный столбец. В качестве имени результирующего столбца будет взято имя первого именованного столбца из операндов комбинированного запроса.

Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter