Разность запросов
Функция
Исключение из результата первого запроса записей, принадлежащих результату второго запроса.
Спецификация
::=
[CORRESPONDING [BY (имя столбца [, …]) ] ] составной запрос [)]
Синтаксические правила
-
Все
<составные запросы>
одной<разности запросов>
должны иметь одинаковое количество совместимых по типу данных столбцов (различными могут быть только имена столбцов). -
Описание конструкции
CORRESPONDING
приведено в пункте «Объединение запросов».
Общие правила
-
<Разность запросов>
получается следующим образом:-
результат инициализируется пустой таблицей;
-
в результат вставляются все строки, которые есть в первом
<составном запросе>
и которых нет во втором<составном запросе>
.
-
-
Если указан
DISTINCT
, из результата исключаются дубликаты строк. -
Если указан
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 |
-
Отсутствие ALL и DISTINCT равнозначно DISTINCT.
-
В
<разности запросов> <GROUP BY-спецификация>
может использоваться только один раз. Она располагается в последнем оператореSELECT
и применяется ко всему результату. Столбцы упорядочения в этом случае задаются только путем указания их порядковых номеров. -
I-й столбец результата
<разности запросов>
будет именован только в том случае, если среди исходных i-х столбцов есть хотя-бы один именованный столбец. В качестве имени результирующего столбца будет взято имя первого именованного столбца из операндов комбинированного запроса.