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 :
<operand> <comparison operator> ANY (<subquery>) <operand> IN (<subquery>) <operand> <comparison operator> SOME (<subquery>)
|
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 :
SELECT s1 FROM t1 WHERE s1 > ANY (SELECT s1 FROM t2);
|
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); SELECT s1 FROM t1 WHERE s1 IN (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 <> SOME (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.
|