> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по оператору UNION

# Оператор UNION

`UNION` можно использовать, явно указывая `UNION ALL` или `UNION DISTINCT`.

Если не указать `ALL` или `DISTINCT`, поведение будет зависеть от настройки `union_default_mode`. Разница между `UNION ALL` и `UNION DISTINCT` заключается в том, что `UNION DISTINCT` удаляет дубликаты в результате объединения; это эквивалентно `SELECT DISTINCT` из подзапроса, содержащего `UNION ALL`.

`UNION` можно использовать для объединения любого количества запросов `SELECT`, дополняя их результаты. Пример:

```sql title="Query" theme={null}
SELECT CounterID, 1 AS table, toInt64(count()) AS c
    FROM test.hits
    GROUP BY CounterID

UNION ALL

SELECT CounterID, 2 AS table, sum(Sign) AS c
    FROM test.visits
    GROUP BY CounterID
    HAVING c > 0
```

Итоговые столбцы сопоставляются по их индексу (порядку внутри `SELECT`). Если имена столбцов не совпадают, имена итогового результата берутся из первого запроса.

Для `UNION` выполняется приведение типов. Например, если у двух объединяемых запросов есть одно и то же поле с типами non-`Nullable` и `Nullable` совместимого типа, то в результирующем `UNION` это поле будет иметь тип `Nullable`.

Запросы, являющиеся частями `UNION`, могут быть заключены в `()`. [ORDER BY](/ru/reference/statements/select/order-by) и [LIMIT](/ru/reference/statements/select/limit) применяются к отдельным запросам, а не к итоговому результату. Если вам нужно применить преобразование к итоговому результату, вы можете поместить все запросы с `UNION` в подзапрос в предложении [FROM](/ru/reference/statements/select/from).

Если вы используете `UNION` без явного указания `UNION ALL` или `UNION DISTINCT`, вы можете задать режим union с помощью настройки [union\_default\_mode](/ru/reference/settings/session-settings#union_default_mode). Значениями настройки могут быть `ALL`, `DISTINCT` или пустая строка. Однако если использовать `UNION`, когда для настройки `union_default_mode` задана пустая строка, будет сгенерировано исключение. Следующие примеры демонстрируют результаты запросов при разных значениях этой настройки.

```sql title="Query" theme={null}
SET union_default_mode = 'DISTINCT';
SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 2;
```

```text title="Response" theme={null}
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
```

```sql title="Query" theme={null}
SET union_default_mode = 'ALL';
SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 2;
```

```text title="Response" theme={null}
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
```

Запросы в составе `UNION/UNION ALL/UNION DISTINCT` могут выполняться одновременно, а их результаты — смешиваться.

**См. также**

* настройка [insert\_null\_as\_default](/ru/reference/settings/session-settings#insert_null_as_default).
* настройка [union\_default\_mode](/ru/reference/settings/session-settings#union_default_mode).
