TOP

SQL ANY 및 ALL 연산자

SQL ANY 및 ALL 설명

SQL 문 ANY 및 ALL을 사용하면 한 열의 값과 다른 값 범위를 비교할 수 있습니다.


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"("제품") 테이블에 있는 샘플입니다.

    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 쿼리는 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 문은 OrderDetails 테이블의 모든(ALL) 레코드의 개수가 10인 경우 ProductName을 나열합니다. 물론 Quantity 열에는 (값 10뿐 아니라) 다양한 값이 있으므로 FALSE이 반환됩니다.

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