mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-17 22:10:54 +00:00
31 lines
2.3 KiB
Markdown
31 lines
2.3 KiB
Markdown
|
# Секция UNION ALL {#union-all-clause}
|
|||
|
|
|||
|
Вы можете использовать `UNION ALL` чтобы объединить любое количество `SELECT` запросы путем расширения их результатов. Пример:
|
|||
|
|
|||
|
``` sql
|
|||
|
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`). Если имена столбцов не совпадают, то имена для конечного результата берутся из первого запроса.
|
|||
|
|
|||
|
При объединении выполняет приведение типов. Например, если два запроса имеют одно и то же поле с не-`Nullable` и `Nullable` совместимыми типами, полученные в результате `UNION ALL` данные будут иметь `Nullable` тип.
|
|||
|
|
|||
|
Запросы, которые являются частью `UNION ALL` не могут быть заключен в круглые скобки. [ORDER BY](order-by.md) и [LIMIT](limit.md) применяются к отдельным запросам, а не к конечному результату. Если вам нужно применить преобразование к конечному результату, вы можете разместить все объединенные с помощью `UNION ALL` запросы в подзапрос в секции [FROM](from.md).
|
|||
|
|
|||
|
## Ограничения {#limitations}
|
|||
|
|
|||
|
Поддерживается только `UNION ALL`. Обычный `UNION` (`UNION DISTINCT`) не поддерживается. Если вам это нужно `UNION DISTINCT`, вы можете написать `SELECT DISTINCT` из подзапроса, содержащего `UNION ALL`.
|
|||
|
|
|||
|
## Детали реализации {#implementation-details}
|
|||
|
|
|||
|
Запросы, которые являются частью `UNION ALL` выполняются параллельно, и их результаты могут быть смешаны вместе.
|