Комбинированный запрос
Функция
Определение комбинированного запроса.
Спецификация
::=
Синтаксические правила
-
Суммарная длина текста < комбинированного запроса > не должна превышать 32 Кбайта.
-
Ограничение на максимальное количество связываемых объектов в < запросе выборки > распространяется только на составной < запрос выборки > < комбинированного запроса >, а не на весь < комбинированный запрос >.
-
Порядок выполнения составных < запросов выборки > < комбинированного запроса > регулируется группирующими скобками.
create table tab1 (I int); create table tab2 (I int); create table tab3 (I int); create table tab4 (I int); create table tab5 (I int);
Содержимое таблиц tab1–tab5:
tab1 tab2 tab3 tab4 tab5 1 6 8 11 8 2 7 9 12 9 3 1 10 13 10 4 2 1 14 11 5 3 2 15 12 Последовательное применение операций комбинированного запроса к его составным запросам выборки.
Схема комбинированного запроса:
S1 union S2 except S3 union S4 intersect S5: select * from tab1 union select * from tab2 except select * from tab3 union select * from tab4 intersect select * from tab5; |3| |4| |5| |6| |7| |11| |12|
Применение операций комбинированного запроса к его составным запросам выборки с учетом группирующих скобок.
Схема комбинированного запроса:
S1 union (S2 except S3) union (S4 intersect S5) select * from tab1 union (select * from tab2 except select * from tab3) union (select * from tab4 intersect select * from tab5); |1 | |2 | |3 | |4 | |5 | |6 | |7 | |11| |12|
Схема комбинированного запроса:
S1 union S2 except (( S3 union S4) intersect S5) select * from tab1 union select * from tab2 except ((select * from tab3 union select * from tab4) intersect select * from tab5); |1| |2| |3| |4| |5| |6| |7|
Схема комбинированного запроса:
(((S1 union S2) except S3) union S4) intersect S5 (((select * from tab1 union select * from tab2) except select * from tab3) union select * from tab4) intersect select * from tab5; |11| |12|
-
Именование столбцов комбинированного запроса выполняется по следующим правилам:
-
если соответствующие столбцы операндов комбинированного запроса имеют одинаковое имя, результирующий столбец будет иметь то же имя;
-
если соответствующие столбцы операндов комбинированного запроса имеют разные имена, результирующий столбец будет иметь имя столбца из первого операнда;
select 1 as aaa union select 2 as bbb union select 3 as ccc; AAA ---- 1 ---- 2 ---- 3
-
если среди соответствующих столбцов операндов комбинированного запроса имеются неименованные столбцы, результирующий столбец будет иметь имя первого именованного столбца из списка этих столбцов;
select 1 union select 2 union select 3 as ccc; CCC ---- 1 ---- 2 ---- 3
-
если все столбцы операндов комбинированного запроса являются неименованными, то результирующий столбец также будет неименованным.
-