TOP

Operatori SQL ANY e ALL

YouLibreCalc for Excel logo

Descrizione SQL ANY e ALL

Le istruzioni SQL ANY e ALL consentono di eseguire confronti tra il valore di una colonna e un intervallo di altri valori.


SQL ANY Descrizione

Operatore ANY:

  • restituisce un valore booleano come risultato
  • restituisce TRUE se ANY dei valori della sottoquery corrisponde alla condizione
  • ANY significa che la condizione sarà vera se l'operazione è vera per uno qualsiasi dei valori nell'intervallo.

    ANY Sintassi

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ANY
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    L'operatore deve essere un operatore di confronto standard (=, <>, !=, >, >=, < o <=).

    SQL ALL Descrizione

    Operatore ALL:

  • restituisce un valore booleano come risultato
  • restituisce TRUE se i valori della sottoquery ALL corrispondono alla condizione
  • utilizzato con gli operatori SELECT, WHERE e HAVING
  • ALL significa che la condizione sarà vera solo se l'operazione è vera per tutti i valori nell'intervallo.

    ALL Sintassi insieme a SELECT

    SELECT ALL column_name(s)
    FROM table_name
    WHERE condition
    

    ALL Sintassi insieme a WHERE o HAVING

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ALL
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    L'operatore deve essere un operatore di confronto standard (=, <>, !=, >, >=, < o <=).

    Banca dati dimostrativa

    Quello che segue è un esempio della tabella "Products" ("Prodotti") del database "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

    E l'esempio dalla tabella "OrderDetails" ("Dettagli ordine"):

    OrderDetailIDOrderIDProductIDQuantity
    1102481112
    2102484210
    310248725
    410249149
    5102495140
    6102504110
    7102505135
    8102506515
    910251226
    10102515715

    Esempi SQL ANY

    La seguente query SQL elenca ProductName se trova un record (ANY) nella tabella OrderDetails con un valore Quantity uguale a 10 (questo restituirà TRUE perché la colonna Quantity ha alcuni valori pari a 10):

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

    La seguente query SQL elenca ProductName se trova qualsiasi record (ANY) nella tabella OrderDetails con una quantità maggiore di 99 (questo restituirà TRUE perché la colonna Quantity contiene alcuni valori maggiori di 99):

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

    Un'altra istruzione SQL elenca ProductName se trova un record (ANY) nella tabella OrderDetails con una quantità maggiore di 1000 (questo restituirà FALSE perché la colonna Quantity non contiene valori maggiori di 1000):

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

    Esempi SQL ALL

    La seguente istruzione SQL elenca tutti i nomi di prodotto (ALL):

    Run SQLSELECT ALL ProductName
    FROM Products
    WHERE TRUE
    

    La seguente istruzione SQL elenca ProductName se tutti i record (ALL) nella tabella OrderDetails hanno un conteggio pari a 10. Naturalmente, questo restituirà FALSE perché la colonna Quantity ha molti valori diversi (non solo il valore 10):

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