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