Секция UNION ALL 

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

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 и LIMIT применяются к отдельным запросам, а не к конечному результату. Если вам нужно применить преобразование к конечному результату, вы можете разместить все объединенные с помощью UNION ALL запросы в подзапрос в секции FROM.

Ограничения 

Поддерживается только UNION ALL. Обычный UNION (UNION DISTINCT) не поддерживается. Если вам это нужно UNION DISTINCT, вы можете написать SELECT DISTINCT из подзапроса, содержащего UNION ALL.

Детали реализации 

Запросы, которые являются частью UNION ALL выполняются параллельно, и их результаты могут быть смешаны вместе.

Рейтинг: 4.5 - 2 голосов

Был ли этот контент полезным?
★★★★★