Sous-requêtes avec les clauses ANY , IN et SOME
<<<
Sous-requêtes avec ALL Sous-requêtes corrélées
>>>

14.1.8 Sous-sélections ( SubSELECT )
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

Les sous-requêtes comme opérateur scalaire
Comparaisons avec les sous-requêtes
Sous-requêtes avec les clauses ANY , IN et SOME
->Sous-requêtes avec ALL
Sous-requêtes corrélées
EXISTS et NOT EXISTS
Sous-requêtes de ligne
Sous-requêtes dans la clause FROM
Erreurs de sous-requêtes
Optimisation des sous-requêtes
Se passer des sous-requêtes avec les premières versions de MySQL

14.1.8.4 Sous-requêtes avec ALL

Syntaxe :

<operand> <comparison operator> ALL (<subquery>)
Le mot ALL , qui doit suivre immédiatement l'opérateur de comparaison, signifie ``retourne TRUE si la comparaison est TRUE pour TOUTES les lignes que la sous-requête retourne''.Par exemple :

SELECT s1 FROM t1 WHERE s1 > ALL (SELECT s1 FROM t2);
Supposons qu'il y ait une ligne dans la table t1 contenant {10}. L'expression est TRUE si la table t2 contient {-5,0,+5} car les trois valeurs de t2 sont inférieures à 10. L'expression est FALSE si la table t2 contient {12,6, NULL ,-100} car il y a une des valeurs de la table t2 , ici 12, qui est plus grande que 10. L'expression est UNKNOWN si la table t2 contient {0, NULL ,1}.Finalement, si la table t2 est vide, le résultat est TRUE . Vous pouvez pensez que le résultat doit être indéterminé ( UNKNOWN ), mais c'est bien TRUE . Ce qui fait que, bizarrement,

SELECT * FROM t1 WHERE 1 > ALL (SELECT s1 FROM t2);
est TRUE si la table t2 est vide, mais

SELECT * FROM t1 WHERE 1 > (SELECT s1 FROM t2);
est UNKNOWN si la table t2 est vide. De plus,

SELECT * FROM t1 WHERE 1 > ALL (SELECT MAX(s1) FROM t2);
est UNKNOWN si la table t2 est vide. En général, les tables avec des NULL et les tables vides sont des cas particuliers : lorsque vous écrivez vos sous-requêtes, pensez bien à les prendre en compte.

<< Sous-requêtes avec ALL >>
Sous-requêtes avec les clauses ANY , IN et SOME Sous-sélections ( SubSELECT ) Sous-requêtes corrélées