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 :
Query
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 et 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.
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. 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.
Query
Response
Query
Response
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.
- paramètre union_default_mode.