Комбинированный запрос

Функция

Определение комбинированного запроса.

Спецификация
 
Синтаксические правила
  1. Суммарная длина текста < комбинированного запроса > не должна превышать 32 Кбайта.

  2. Ограничение на максимальное количество связываемых объектов в < запросе выборки > распространяется только на составной < запрос выборки > < комбинированного запроса >, а не на весь < комбинированный запрос >.

  3. Порядок выполнения составных < запросов выборки > < комбинированного запроса > регулируется группирующими скобками.

    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:

    tab1tab2tab3tab4tab5
    168118
    279129
    31101310
    4211411
    5321512

    Последовательное применение операций комбинированного запроса к его составным запросам выборки.

    Схема комбинированного запроса:

    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|
  4. Именование столбцов комбинированного запроса выполняется по следующим правилам:

    • если соответствующие столбцы операндов комбинированного запроса имеют одинаковое имя, результирующий столбец будет иметь то же имя;

    • если соответствующие столбцы операндов комбинированного запроса имеют разные имена, результирующий столбец будет иметь имя столбца из первого операнда;

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