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

Функция

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

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