TOP

SQL ANY および ALL 演算子

SQL ANY および ALL 説明

SQL ステートメント ANY および ALL を使用すると、1 つの列の値と他の値の範囲とを比較できます。


SQL ANY 説明

ANY 演算子:

  • 結果としてブール値を返します
  • サブクエリ値の ANY が条件に一致する場合、 TRUE を返します
  • ANY は、範囲内のいずれかの値に対して操作が true の場合に条件が true になることを意味します。

    ANY 構文

    SELECT column_name(s)
    FROM table_name
    WHERE column_name operator ANY
      (SELECT column_name
       FROM table_name
       WHERE condition)
    
    演算子は、標準の比較演算子 (=、<>、!=、>、>=、<、または <=) である必要があります。

    SQL ALL 説明

    オペレーター ALL:

  • 結果としてブール値を返します
  • ALL サブクエリ値が条件に一致する場合、TRUE を返します
  • SELECT、WHERE、および HAVING 演算子とともに使用されます
  • ALL は、範囲内のすべての値に対して操作が true の場合にのみ条件が true になることを意味します。

    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)
    
    演算子は、標準の比較演算子 (=、<>、!=、>、>=、<、または <=) である必要があります。

    デモデータベース

    以下は、「Northwind」データベースの「Products」(「Products」) テーブルのサンプルです。

    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

    テーブル "OrderDetailss" ("注文の詳細") のサンプル:

    OrderDetailIDOrderIDProductIDQuantity
    1102481112
    2102484210
    310248725
    410249149
    5102495140
    6102504110
    7102505135
    8102506515
    910251226
    10102515715

    SQL ANY の例

    次の SQL クエリは、OrderDetails テーブル内で Quantity 値が 10 に等しい (ANY) レコードを見つけた場合、ProductName をリストします (Quantity 列の値が 10 であるため、これは TRUE を返します)。

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

    次の SQL クエリでは、OrderDetails テーブル内で数量が 99 を超える (ANY) レコードが見つかった場合に、ProductName をリストします (Quantity 列に 99 を超える値が含まれているため、これは TRUE を返します)。

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

    別の SQL ステートメントは、OrderDetails テーブル内で 1000 を超える数量を持つ (ANY) レコードが見つかった場合、ProductName をリストします (Quantity 列には 1000 を超える値が含まれていないため、FALSE が返されます)。

    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 ステートメントは、OrderDetailss テーブル内のすべての (ALL) レコードのカウントが 10 に等しい場合に、ProductName をリストします。 もちろん、列 Quantity にはさまざまな値 (値 10 だけでなく) があるため、これは FALSE を返します。

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