SQL ANY / SOME

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.

Partager