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

> Documentação da cláusula UNION

# Cláusula UNION

Você pode usar `UNION`, especificando explicitamente `UNION ALL` ou `UNION DISTINCT`.

Se você não especificar `ALL` ou `DISTINCT`, isso dependerá da configuração `union_default_mode`. A diferença entre `UNION ALL` e `UNION DISTINCT` é que `UNION DISTINCT` aplicará uma operação de distinct ao resultado da união; isso é equivalente a um `SELECT DISTINCT` sobre uma subconsulta que contém `UNION ALL`.

Você pode usar `UNION` para combinar qualquer número de consultas `SELECT`, concatenando seus resultados. Exemplo:

```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
```

As colunas do resultado são correspondidas pelo índice (ordem dentro de `SELECT`). Se os nomes das colunas não corresponderem, os nomes do resultado final serão obtidos da primeira consulta.

A conversão de tipos é realizada para unions. Por exemplo, se duas consultas combinadas tiverem o mesmo campo com tipos `Nullable` e não `Nullable` de um tipo compatível, o `UNION` resultante terá esse campo do tipo `Nullable`.

As consultas que fazem parte de `UNION` podem ser colocadas entre `()`. [ORDER BY](/pt-BR/reference/statements/select/order-by) e [LIMIT](/pt-BR/reference/statements/select/limit) são aplicados a consultas separadas, não ao resultado final. Se você precisar aplicar uma conversão ao resultado final, poderá colocar todas as consultas com `UNION` em uma subconsulta na cláusula [FROM](/pt-BR/reference/statements/select/from).

Se você usar `UNION` sem especificar explicitamente `UNION ALL` ou `UNION DISTINCT`, poderá definir o modo de união usando a configuração [union\_default\_mode](/pt-BR/reference/settings/session-settings#union_default_mode). Os valores da configuração podem ser `ALL`, `DISTINCT` ou uma string vazia. No entanto, se você usar `UNION` com a configuração `union_default_mode` definida como string vazia, será gerada uma exceção. Os exemplos a seguir demonstram os resultados de consultas com diferentes valores dessa configuração.

```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 │
└───┘
```

Consultas que fazem parte de `UNION/UNION ALL/UNION DISTINCT` podem ser executadas simultaneamente, e seus resultados podem ser combinados.

**Veja também**

* configuração [insert\_null\_as\_default](/pt-BR/reference/settings/session-settings#insert_null_as_default).
* configuração [union\_default\_mode](/pt-BR/reference/settings/session-settings#union_default_mode).
