L'utilisation la plus répandue des sous-requêtes est celle-ci :
<non-subquery operand> <comparison operator> (<subquery>)
où <comparison operator>
est l'un
des opérateurs suivants :
= > < >= <= <>
Par exemple :
... 'a' = (SELECT column1 FROM t1)
Il fut un temps où la seule place possible pour une sous-requête était à la droite de l'opérateur de comparaison, mais vous pourrez rencontrer de vieilles bases qui insisteront sur ce point.
Voici un exemple de comparaison classiques, pour lequel vous
ne pouvez pas utiliser de jointure : trouvez toutes les
valeurs de la table t1
qui sont égales au
maximum de la valeur dans la table t2
.
SELECT column1 FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2);
Voici un autre exemple, qui est aussi impossible à réaliser
avec une jointure, car elle impose l'agrégation de plusieurs
tables : trouver toutes les lignes de la table
t1
qui contiennent une valeur qui apparaît
deux fois.
SELECT * FROM t1 WHERE 2 = (SELECT COUNT(column1) FROM t1);
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.