TOP

Opérateurs SQL ANY et ALL

SQL ANY et ALL descriptif

Les instructions SQL ANY et ALL vous permettent d'effectuer des comparaisons entre la valeur d'une colonne et une plage d'autres valeurs.


SQL ANY descriptif

Opérateur ANY :

  • renvoie une valeur booléenne comme résultat
  • renvoie TRUE si ANY des valeurs de sous-requête correspond à la condition
  • ANY signifie que la condition sera vraie si l'opération est vraie pour l'une des valeurs de la plage.

    Syntaxe ANY

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ANY
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    L'opérateur doit être un opérateur de comparaison standard (=, <>, !=, >, >=, < ou <=).

    SQL ALL descriptif

    Opérateur ALL :

  • renvoie une valeur booléenne comme résultat
  • renvoie TRUE si les valeurs de la sous-requête ALL correspondent à la condition
  • utilisé avec les opérateurs SELECT, WHERE et HAVING
  • ALL signifie que la condition ne sera vraie que si l'opération est vraie pour toutes les valeurs de la plage.

    ALL Syntaxe avec SELECT

    SELECT ALL column_name(s)
    FROM table_name
    WHERE condition
    

    ALL Syntaxe avec WHERE ou HAVING

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ALL
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    L'opérateur doit être un opérateur de comparaison standard (=, <>, !=, >, >=, < ou <=).

    Base de données de démonstration

    Voici un exemple de la table « Products » (« Produits ») de la base de données « Northwind » :

    ProductIDProductNameSupplierIDCategoryIDUnitPrice
    1Chais1110 boxes x 20 bags18.00
    2Chang1124 - 12 oz bottles19.00
    3Aniseed Syrup1212 - 550 ml bottles10.00
    4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
    5Chef Anton's Gumbo Mix2236 boxes21.35
    6Grandma's Boysenberry Spread3212 - 8 oz jars25.00
    7Uncle Bob's Organic Dried Pears3712 - 1 lb pkgs.30.00
    8Northwoods Cranberry Sauce3212 - 12 oz jars40.00
    9Mishi Kobe Niku4618 - 500 g pkgs.97.00
    10Ikura4812 - 200 ml jars31.00

    Et l'échantillon du tableau "OrderDetails" ("Détails de la commande") :

    OrderDetailIDOrderIDProductIDQuantity
    1102481112
    2102484210
    310248725
    410249149
    5102495140
    6102504110
    7102505135
    8102506515
    910251226
    10102515715

    SQL ANY Exemples

    La requête SQL suivante répertorie ProductName si elle trouve un enregistrement (ANY) dans la table OrderDetails avec une valeur Quantity égale à 10 (cela renverra TRUE car la colonne Quantity a des valeurs de 10) :

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)
    

    La requête SQL suivante répertorie ProductName si elle trouve un enregistrement (ANY) dans la table OrderDetails avec une quantité supérieure à 99 (cela renverra TRUE car la colonne Quantity contient des valeurs supérieures à 99) :

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 99)
    

    Une autre instruction SQL répertorie ProductName si elle trouve un enregistrement (ANY) dans la table OrderDetails avec une quantité supérieure à 1000 (cela renverra FALSE car la colonne Quantity ne contient pas de valeurs supérieures à 1000) :

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ANY
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity > 1000)
    

    Exemples SQL ALL

    L'instruction SQL suivante répertorie tous les noms de produits (ALL) :

    Run SQLSELECT ALL ProductName
    FROM Products
    WHERE TRUE
    

    L'instruction SQL suivante répertorie ProductName si tous les enregistrements (ALL) de la table OrderDetails ont un nombre égal à 10. Bien sûr, cela renverra FALSE car la colonne Quantity a de nombreuses valeurs différentes (pas seulement la valeur 10) :

    Run SQLSELECT ProductName
    FROM Products
    WHERE ProductID = ALL
      (SELECT ProductID
       FROM OrderDetails
       WHERE Quantity = 10)