Dans le langage SQL, la commande ANY (ou SOME) permet de comparer une valeur avec le résultat d’une sous-requête. Il est ainsi possible de vérifier si une valeur est “égale”, “différente”, “supérieur”, “supérieur ou égale”, “inférieur” ou “inférieur ou égale” pour au moins une des valeurs de la sous-requête.
A noter : le mot-clé SOME est un alias de ANY, l’un et l’autre des termes peut être utilisé.
Syntaxe
Cette commande s’utilise dans une clause conditionnelle juste après un opérateur conditionnel et juste avant une sous-requête. L’exemple ci-dessous démontre une utilisation basique de ANY dans une requête SQL :
SELECT * FROM table1 WHERE condition > ANY ( SELECT * FROM table2 WHERE condition2 )
Cette requête peut se traduire de la façon suivante : sélectionner toutes les colonnes de table1, où la condition est supérieure à n’importe quel résultat de la sous-requête.
A savoir : les opérateur conditionnels peuvent être les suivants : =, <, >, <>, !=,<=, >=, !> ou !<.
Exemple
En se basant sur l’exemple relativement simple présenté ci-dessus, il est possible d’effectuer une requête concrète qui utilise la commande ANY :
SELECT colonne1 FROM table1 WHERE colonne1 > ANY ( SELECT colonne1 FROM table2 )
Supposons que la table1 possède un seul résultat dans lequel colonne1 est égal à 10.
- La condition est vrai (cf. TRUE) si table2 contient {21,14,7} car il y a au moins une valeur inférieure à 10
- La condition est fausse (cf. FALSE) si table2 contient {20,10} car aucune valeur est strictement inférieure à 10
- La condition est non connue (cf. UNKNOW) si table2 est vide
Astuce
La commande IN est équivalent à l’opérateur = suivi de ANY.