| 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.3 Sous-requêtes avec les clauses ANY , IN et SOME Syntaxe :
 
 Le mot  
ANY
 , qui doit suivre immédiatement un opérateur de comparaison,
signifie : ``retourne  
TRUE
  si la comparaison est  
TRUE
  pour  
UNE
  
des lignes que la sous-requête retourne.''
Par exemple :| 
<operand> <comparison operator> ANY (<subquery>)<operand> IN (<subquery>)
 <operand> <comparison operator> SOME (<subquery>)
 | 
 Supposons qu'il y ait une ligne dans la table  
t1
  qui contienne {10}.
L'expression est  
TRUE
  si la table  
t2
  contient {21,14,7} car
il y a une valeur de  
t2
 , 7,  qui est inférieure à 10.
Cette expression est  
FALSE
  si la table  
t2
  contient {20,10},
ou si la table  
t2
  est vide.
L'expression est  
UNKNOWN
  si la table  
t2
  contient
{ 
NULL
 , 
NULL
 , 
NULL
 }.Le mot  
IN
  est un alias de  
= ANY
 . Les deux commandes suivantes
sont identiques :| 
SELECT s1 FROM t1 WHERE s1 > ANY (SELECT s1 FROM t2);
 | 
 Le mot  
SOME
  est un alias de  
ANY
 . Les deux commandes suivantes
sont identiques :| 
SELECT s1 FROM t1 WHERE s1 = ANY (SELECT s1 FROM t2);SELECT s1 FROM t1 WHERE s1 IN    (SELECT s1 FROM t2);
 | 
 L'utilisation du mot  
SOME
  est rare, mais les exemples ci-dessus montrent
pourquoi il peut être utile. En langage parlé, ``a n'est pas égal à aucun b'' signifie
pour la majorité des gens, ``il n'y a pas de b qui est égal à a'' : ce n'est pas
la signification de la syntaxe SQL. En utilisant  
<> SOME
 , vous pouvez
vous assurer que tout le monde comprend le véritable sens de la commande.| 
SELECT s1 FROM t1 WHERE s1 <> ANY  (SELECT s1 FROM t2);SELECT s1 FROM t1 WHERE s1 <> SOME (SELECT s1 FROM t2);
 | 
 |