TOP

Operadores SQL ANY y ALL

SQL ANY y ALL Descripción

Las declaraciones SQL ANY y ALL le permiten realizar una comparación entre un valor en una columna y un rango de otros valores.


SQL ANY descripción

Operador ANY:

  • devuelve un valor booleano como resultado
  • devuelve TRUE si ANY de los valores de la subconsulta coincide con la condición
  • ANY significa que la condición será verdadera si la operación es verdadera para cualquiera de los valores del rango.

    ANY Sintaxis

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ANY
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    El operador debe ser un operador de comparación estándar (=, <>, !=, >, >=, < o <=).

    SQL ALL descripción

    Operador ALL:

  • devuelve un valor booleano como resultado
  • devuelve TRUE si los valores de la subconsulta ALL coinciden con la condición
  • utilizado con los operadores SELECT, WHERE y HAVING
  • ALL significa que la condición será verdadera solo si la operación es verdadera para todos los valores del rango.

    ALL Sintaxis junto con SELECT

    SELECT ALL column_name(s)
    FROM table_name
    WHERE condition
    

    ALL Sintaxis junto con WHERE o HAVING

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ALL
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    El operador debe ser un operador de comparación estándar (=, <>, !=, >, >=, < o <=).

    Base de datos de demostración

    El siguiente es un ejemplo de la tabla "Products" ("Productos") de la base de datos "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

    Y el ejemplo de la tabla "OrderDetails" ("Detalles del pedido"):

    OrderDetailIDOrderIDProductIDQuantity
    1102481112
    2102484210
    310248725
    410249149
    5102495140
    6102504110
    7102505135
    8102506515
    910251226
    10102515715

    SQL ANY Ejemplos

    La siguiente consulta SQL enumera ProductName si encuentra algún registro (ANY) en la tabla OrderDetails con un valor Quantity igual a 10 (esto devolverá TRUE porque la columna Quantity tiene algunos valores de 10):

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

    La siguiente consulta SQL enumera ProductName si encuentra algún registro (ANY) en la tabla OrderDetails con una cantidad mayor que 99 (esto devolverá TRUE porque la columna Quantity contiene algunos valores mayores que 99):

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

    Otra declaración SQL enumera ProductName si encuentra algún registro (ANY) en la tabla OrderDetails con una cantidad mayor que 1000 (esto devolverá FALSE porque la columna Quantity no contiene valores mayores que 1000):

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

    SQL ALL Ejemplos

    La siguiente declaración SQL enumera todos los nombres de productos (ALL):

    Run SQLSELECT ALL ProductName
    FROM Products
    WHERE TRUE
    

    La siguiente instrucción SQL enumera ProductName si todos los registros (ALL) en la tabla OrderDetails tienen un recuento igual a 10. Por supuesto, esto devolverá FALSE porque la columna Quantity tiene muchos valores diferentes (no solo el valor 10):

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