ВГОРУ

SQL ANY та ALL Оператори

SQL ANY та ALL Опис

Оператори SQL ANY та ALL дозволяють виконувати порівняння між значенням одного стовпця та діапазоном інших значень.


SQL ANY Опис

Оператор ANY:

  • повертає логічне значення як результат
  • повертає TRUE, якщо ANY зі значень підзапиту відповідає умові
  • ANY означає, що умова буде істинною, якщо операція є істинною для будь-якого зі значень у діапазоні.

    ANY Синтаксис

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ANY
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    Оператор має бути стандартним оператором порівняння (=, <>, !=, >, >=, <, or <=).

    SQL ALL Опис

    Оператор ALL:

  • повертає логічне значення як результат
  • повертає TRUE, якщо ALL значення підзапиту відповідають умові
  • використовується з операторами SELECT, WHERE та HAVING
  • ALL означає, що умова буде істинною, лише якщо операція буде істинною для всіх значень у діапазоні.

    ALL Синтаксис разом з SELECT

    SELECT ALL column_name(s)
    FROM table_name
    WHERE condition
    

    ALL Синтаксис разом з WHERE або HAVING

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ALL
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    Оператор має бути стандартним оператором порівняння (=, <>, !=, >, >=, <, or <=).

    Демонстраційна база даних

    Нижче наведено вибірку з таблиці "Products" ("Продукти") бази даних "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

    Та вибірку із таблиці "OrderDetails" ("Деталі замовлення"):

    OrderDetailIDOrderIDProductIDQuantity
    1102481112
    2102484210
    310248725
    410249149
    5102495140
    6102504110
    7102505135
    8102506515
    910251226
    10102515715

    SQL ANY Приклади

    Наступний SQL-запит перераховує ProductName, якщо він знаходить будь-який (ANY) запис у таблиці OrderDetails із значенням Quantity, що дорівнює 10 (це поверне TRUE, оскільки стовпець Quantity має деякі значення 10):

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

    Наступний SQL-запит перераховує ProductName, якщо він знаходить будь-який (ANY) запис у таблиці OrderDetails із кількістю, більшою за 99 (це поверне TRUE, оскільки стовпець Quantity містить деякі значення, більші за 99):

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

    Ще одна інструкція SQL перераховує ProductName, якщо вона знаходить будь-який (ANY) запис у таблиці OrderDetails із кількістю, більшою за 1000 (це поверне значення FALSE, оскільки стовпець Quantity не містить значень, більших за 1000):

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

    SQL ALL Приклади

    Наступний оператор SQL перераховує всі (ALL) назви продуктів:

    Run SQLSELECT ALL ProductName
    FROM Products
    WHERE TRUE
    

    Наступний оператор SQL містить список ProductName, якщо всі (ALL) записи в таблиці OrderDetails мають кількість, рівну 10. Звичайно, це поверне FALSE, оскільки стовпець Quantity має багато різних значень (не лише значення 10):

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