Syntaxe de JOIN
<<<
Syntaxe de UNION Manipulation de données : SELECT , INSERT , UPDATE , DELETE
>>>

14.1.7 Syntaxe de SELECT
14.1 Manipulation de données : SELECT , INSERT , UPDATE , DELETE
14 Syntaxe des commandes SQL
 Manuel de Référence MySQL 4.1 : Version Française

Syntaxe de JOIN
->Syntaxe de UNION

14.1.7.2 Syntaxe de UNION


SELECT ...
UNION [ALL | DISTINCT]
SELECT ...
  [UNION [ALL | DISTINCT]
   SELECT ...]
UNION est implémentée en MySQL 4.0.0. UNION est utilisé pour combiner le résultat de plusieurs requêtes SELECT en un seul résultat.

Les colonnes listées dans la partie select_expression du SELECT doivent être du même type. Les noms de colonnes utilisés dans le premier SELECT seront utilisé comme nom de champs pour les résultats retournés.

Les commandes SELECT sont des sélections normales, mais avec les restrictions suivantes :
  • Seule la dernière commande SELECT peut avoir une clause INTO OUTFILE .
  • HIGH_PRIORITY ne peut être utilisée avec les commandes SELECT qui ne font pas partie de l' UNION . Si vous la spécifiez pour la première commande SELECT , elle n'aura pas d'effet. Si vous la spécifiez pour toute autre commandes SELECT suivante, une erreur de syntaxe sera signalée.
Si vous n'utilisez pas le mot clef ALL pour l' UNION , toutes les lignes retournées seront uniques, comme si vous aviez fait un DISTINCT pour l'ensemble du résultat. Si vous spécifiez ALL , vous aurez alors tout les résultats retournés par toutes les commandes SELECT .

Si vous voulez utiliser un ORDER BY pour le résultat final de UNION , vous devez utiliser des parenthèses :


(SELECT a FROM nom_de_table WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM nom_de_table WHERE a=11 AND B=2 ORDER BY a LIMIT 10)
ORDER BY a;
Note : vous ne pouvez pas mélanger les clauses UNION ALL et UNION DISTINCT dans la même requête. Si vous utilisez ALL dans une des UNION , alors elle devra être utilisée partout.

Les types et longueurs des colonnes du jeu de résultat de UNION prend en compte les valeurs lues dans tous les SELECT . Avant MySQL 4.1.1, une limitation de UNION est que seules les valeurs du premier SELECT étaient utilisée pour déterminer le type de résultats, et leur taille. Cela peut conduire à un raccourcissement de la valeur si, par exemple, le second SELECT trouvait des valeurs plus grandes que le premier SELECT :


mysql> SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10);
+---------------+
| REPEAT('a',1) |
+---------------+
| a             |
| b             |
+---------------+
Cette limitation a été supprimée en MySQL version 4.1.1 :

mysql> SELECT REPEAT('a',1) UNION SELECT REPEAT('b',10);
+---------------+
| REPEAT('a',1) |
+---------------+
| a             |
| bbbbbbbbbb    |
+---------------+

<< Syntaxe de UNION >>
Syntaxe de JOIN Syntaxe de SELECT Manipulation de données : SELECT , INSERT , UPDATE , DELETE