Sets a special mode for combining `SELECT` query results using the [UNION](../../sql-reference/statements/select/union-all.md) expression.
Sets a mode for combining `SELECT` query results. The setting is only used when shared with [UNION](../../sql-reference/statements/select/union.md) without explicitly specifying the `UNION ALL` or `UNION DISTINCT`.
Possible values:
...
...
@@ -2470,53 +2470,6 @@ Possible values:
Default value: `'DISTINCT'`.
**Example of using the 'DISTINCT' value**
Query:
```sql
SETunion_default_mode='DISTINCT';
SELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT2;
```
Result:
```text
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
```
**Example of using the 'ALL' value**
Query:
```sql
SETunion_default_mode='ALL';
SELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT2;
```
Result:
```text
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
```
See examples in [UNION](../../sql-reference/statements/select/union.md).
You can use `UNION ALL` to combine any number of `SELECT` queries by extending their results. Example:
...
...
@@ -25,16 +25,55 @@ Type casting is performed for unions. For example, if two queries being combined
Queries that are parts of `UNION ALL` can’t be enclosed in round brackets. [ORDER BY](../../../sql-reference/statements/select/order-by.md) and [LIMIT](../../../sql-reference/statements/select/limit.md) are applied to separate queries, not to the final result. If you need to apply a conversion to the final result, you can put all the queries with `UNION ALL` in a subquery in the [FROM](../../../sql-reference/statements/select/from.md) clause.
# UNION DISTINCT Clause {#union-distinct-clause}
By default, `UNION` has the same behavior as `UNION DISTINCT`. The difference between `UNION ALL` and `UNION DISTINCT` is that `UNION DISTINCT` will do a distinct transform for union result, it is equivalent to `SELECT DISTINCT` from a subquery containing `UNION ALL`.
The difference between `UNION ALL` and `UNION DISTINCT` is that `UNION DISTINCT` will do a distinct transform for union result, it is equivalent to `SELECT DISTINCT` from a subquery containing `UNION ALL`.
If you use `UNION` without explicitly specifying `UNION ALL` or `UNION DISTINCT`, you can specify the union mode using the [union_default_mode](../../../operations/settings/settings.md#union-default-mode) setting. The setting values can be `ALL`, `DISTINCT` or an empty string. However, if you use `UNION` with `union_default_mode` setting to empty string, it will throw an exception. The following examples demonstrate the results of queries with different values setting.
# UNION Clause {#union-clause}
Query:
```sql
SETunion_default_mode='DISTINCT';
SELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT2;
```
Result:
By default, `UNION` has the same behavior as `UNION DISTINCT`, but you can specify union mode by [union_default_mode](../../../operations/settings/settings.md#union-default-mode) setting, values can be `ALL`, `DISTINCT` or an empty string. However, if you use `UNION` with `union_default_mode` setting to empty string, it will throw an exception.
@@ -2326,7 +2326,7 @@ SELECT number FROM numbers(3) FORMAT JSONEachRow;
## union_default_mode {#union-default-mode}
Устанавливает особый режим объединения результатов `SELECT` запросов, используя выражение [UNION](../../sql-reference/statements/select/union-all.md).
Устанавливает режим объединения результатов `SELECT` запросов. Настройка используется только при совместном использовании с [UNION](../../sql-reference/statements/select/union.md) без явного указания `UNION ALL` или `UNION DISTINCT`.
Возможные значения:
...
...
@@ -2336,53 +2336,6 @@ SELECT number FROM numbers(3) FORMAT JSONEachRow;
Значение по умолчанию: `'DISTINCT'`.
**Пример использования 'DISTINCT' в качестве значения настройки**
Запрос:
```sql
SETunion_default_mode='DISTINCT';
SELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT2;
```
Результат:
```text
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
```
**Пример использования 'ALL' в качестве значения настройки**
Запрос:
```sql
SETunion_default_mode='ALL';
SELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT2;
```
Результат:
```text
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
```
Смотрите примеры в разделе [UNION](../../sql-reference/statements/select/union.md).
Вы можете использовать `UNION ALL` чтобы объединить любое количество `SELECT` запросы путем расширения их результатов. Пример:
...
...
@@ -25,16 +25,55 @@ SELECT CounterID, 2 AS table, sum(Sign) AS c
Запросы, которые являются частью `UNION ALL` не могут быть заключен в круглые скобки. [ORDER BY](order-by.md) и [LIMIT](limit.md) применяются к отдельным запросам, а не к конечному результату. Если вам нужно применить преобразование к конечному результату, вы можете разместить все объединенные с помощью `UNION ALL` запросы в подзапрос в секции [FROM](from.md).
# Секция UNION DISTINCT {#union-distinct-clause}
По умолчанию, `UNION` ведет себя так же, как и `UNION DISTINCT`. Разница между `UNION ALL` и `UNION DISTINCT` в том, что `UNION DISTINCT` выполняет явное преобразование для результата объединения. Это равнозначно выражению `SELECT DISTINCT` из подзапроса, содержащего `UNION ALL`.
Разница между `UNION ALL` и `UNION DISTINCT` в том, что `UNION DISTINCT` выполняет явное преобразование для результата объединения. Это равнозначно выражению `SELECT DISTINCT` из подзапроса, содержащего `UNION ALL`.
Если используете `UNION` без явного указания `UNION ALL` или `UNION DISTINCT`, то вы можете указать режим объединения с помощью настройки [union_default_mode](../../../operations/settings/settings.md#union-default-mode), значениями которой могут быть `ALL`, `DISTINCT` или пустая строка. Однако если вы используете `UNION` с настройкой `union_default_mode`, значением которой является пустая строка, то будет сгенерировано исключение. В следующих примерах продемонстрированы результаты запросов при разных значениях настройки.
# Секция UNION {#union-clause}
Запрос:
```sql
SETunion_default_mode='DISTINCT';
SELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT2;
```
Результат:
По умолчанию, `UNION` ведет себя так же, как и `UNION DISTINCT`. Но вы можете указать особый режим объединения с помощью настройки [union_default_mode](../../../operations/settings/settings.md#union-default-mode), значениями которой могут быть `ALL`, `DISTINCT` или пустая строка. Однако если вы используете `UNION` с настройкой `union_default_mode`, значением которой является пустая строка, то будет сгенерировано исключение.
```text
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
```
## Детали реализации {#implementation-details}
Запрос:
```sql
SETunion_default_mode='ALL';
SELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT2;
```
Результат:
```text
┌─1─┐
│ 1 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 2 │
└───┘
┌─1─┐
│ 3 │
└───┘
```
Запросы, которые являются частью `UNION ALL`, выполняются параллельно, и их результаты могут быть смешаны вместе.