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