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