| 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 :
 
 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 :| 
<operand> <comparison operator> ALL (<subquery>)
 | 
 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 s1 FROM t1 WHERE s1 > ALL (SELECT s1 FROM t2);
 | 
 est  
TRUE
  si la table  
t2
  est vide, mais| 
SELECT * FROM t1 WHERE 1 > ALL (SELECT s1 FROM t2);
 | 
 est  
UNKNOWN
  si la table  
t2
  est vide. De plus,| 
SELECT * FROM t1 WHERE 1 > (SELECT 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.| 
SELECT * FROM t1 WHERE 1 > ALL (SELECT MAX(s1) FROM t2);
 | 
 |