> ## 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.

> Documentation de la clause UNION

# Clause UNION

Vous pouvez utiliser `UNION` en spécifiant explicitement `UNION ALL` ou `UNION DISTINCT`.

Si vous ne spécifiez ni `ALL` ni `DISTINCT`, le comportement dépend du paramètre `union_default_mode`. La différence entre `UNION ALL` et `UNION DISTINCT` est que `UNION DISTINCT` déduplique le résultat de l’union ; cela équivaut à appliquer `SELECT DISTINCT` à une sous-requête contenant `UNION ALL`.

Vous pouvez utiliser `UNION` pour combiner un nombre quelconque de requêtes `SELECT` en concaténant leurs résultats. Exemple :

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

Les colonnes du résultat sont mises en correspondance selon leur indice (ordre dans `SELECT`). Si les noms de colonnes ne correspondent pas, les noms du résultat final sont repris de la première requête.

Une conversion de type est effectuée pour les unions. Par exemple, si deux requêtes combinées comportent le même champ avec des types `Nullable` et non `Nullable` d’un type compatible, le `UNION` obtenu contient un champ de type `Nullable`.

Les requêtes faisant partie de `UNION` peuvent être placées entre `()`. [ORDER BY](/fr/reference/statements/select/order-by) et [LIMIT](/fr/reference/statements/select/limit) s’appliquent à chaque requête séparément, et non au résultat final. Si vous devez appliquer une conversion au résultat final, vous pouvez placer toutes les requêtes avec `UNION` dans une sous-requête de la clause [FROM](/fr/reference/statements/select/from).

Si vous utilisez `UNION` sans préciser explicitement `UNION ALL` ou `UNION DISTINCT`, vous pouvez définir le mode d’union à l’aide du paramètre [union\_default\_mode](/fr/reference/settings/session-settings#union_default_mode). Les valeurs de ce paramètre peuvent être `ALL`, `DISTINCT` ou une chaîne vide. Cependant, si vous utilisez `UNION` avec le paramètre `union_default_mode` défini sur une chaîne vide, une exception sera levée. Les exemples suivants montrent les résultats des requêtes selon les différentes valeurs du paramètre.

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

Les requêtes faisant partie de `UNION/UNION ALL/UNION DISTINCT` peuvent être exécutées simultanément, et leurs résultats peuvent être intercalés.

**Voir aussi**

* paramètre [insert\_null\_as\_default](/fr/reference/settings/session-settings#insert_null_as_default).
* paramètre [union\_default\_mode](/fr/reference/settings/session-settings#union_default_mode).
