Пересечение запросов
Функция
Определение пересекающихся результатов двух запросов.
Спецификация
::=
[CORRESPONDING [BY (имя столбца [, …]) ] ] составной запрос [)]
Синтаксические правила
-
Все
< составные запросы >
одного< пересечения запросов >
должны иметь одинаковое количество совместимых по типу данных столбцов (различными могут быть только имена столбцов). -
Описание конструкции
CORRESPONDING
приведено в пункте «Объединение запросов».
Общие правила
-
< Пересечение запросов >
получается следующим образом:-
результат инициализируется пустой таблицей;
-
в результат вставляются все строки, которые есть и в первом
< составном запросе >
, и во втором< составном запросе >
.
-
-
Если указан
DISTINCT
, из результата исключаются дубликаты строк. -
Если указан
ALL
, каждая запись выдается в наименьшем количестве, в котором она содержится в одном из< составных запросов >
.Пусть есть две таблицы:
tab1 tab2 1 2 2 4 3 5 4 7 3 4 4
select * from tab1 intersect all select * from tab2; select * from tab1 intersect distinct select * from tab2; |2 | |4 | |4 |
|2 | |4 |
-
В
< пересечении запросов > < GROUP BY-спецификация >
может использоваться только один раз. Она располагается в последнем оператореSELECT
и применяется ко всему результату. Столбцы упорядочения в этом случае задаются только путем указания их порядковых номеров. -
I-й столбец результата
< пересечения запросов >
будет именован только в том случае, если среди исходных i-х столбцов есть хотя-бы один именованный столбец. В качестве имени результирующего столбца будет взято имя первого именованного столбца из операндов комбинированного запроса.