Les sous-requêtes sont valides dans la clause
FROM
d'une commande
SELECT
. Voici une syntaxe que vous allez
rencontrer :
SELECT ... FROM (<subquery>) AS <name> ...
La clause AS <name>
est obligatoire,
car les tables de la clause FROM
doivent
avoir un nom. Toutes les colonnes de la sous-requête
<subquery>
doivent avoir des noms
distincts. Vous pourrez trouver cette syntaxe décrite
ailleurs dans ce manuel, sous le nom de ``tables dérivées''.
Par exemple, supposons que vous avons cette table :
CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT);
Comment utiliser la fonctionnalité de sous-requêtes dans la
clause FROM
, avec cette table d'exemple :
INSERT INTO t1 VALUES (1,'1',1.0); INSERT INTO t1 VALUES (2,'2',2.0); SELECT sb1,sb2,sb3 FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb WHERE sb1 > 1;
Résultat : 2, '2', 4.0.
Voici un autre exemple : supposons que vous voulez connaître la moyenne de la somme pour un groupe de table. Ceci ne fonctionnera pas :
SELECT AVG(SUM(column1)) FROM t1 GROUP BY column1;
Mais cette requête-ci vous donnera les informations nécessaires :
SELECT AVG(sum_column1) FROM (SELECT SUM(column1) AS sum_column1 FROM t1 GROUP BY column1) AS t1;
Notez que les colonnes sont nommées à partir de la
sous-requête : (sum_column1)
est reconnue
dans la requête externe.
Actuellement, les sous-requêtes en clause
FROM
ne peuvent pas être corrélées.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.