Определение комбинированного запроса.
::=
Суммарная длина текста <комбинированного запроса> не должна превышать 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
если все столбцы операндов комбинированного запроса являются неименованными, то результирующий столбец также будет неименованным.