ALL(Transact-SQL)
적용 대상: Microsoft Fabric의 SQL ServerAzure SQL Database Azure SQL Managed Instance SQL 데이터베이스
스칼라 값을 단일 열 집합 값과 비교합니다.
구문
scalar_expression { = | <> | != | > | >= | !> | < | <= | !< } ALL ( subquery )
인수
scalar_expression
유효한 식입니다.
{ = | <> | != | > | >= | !> | < | <= | !< }
비교 연산자입니다.
subquery
한 열의 결과 집합을 반환하는 하위 쿼리입니다. 반환된 열의 데이터 형식은 scalar_expression의 데이터 형식과 같아야 합니다.
하위 쿼리는 제한된 SELECT 문이며 ORDER BY 절 및 INTO 키워드는 허용되지 않습니다.
결과 형식
Boolean
결과 값
모든 쌍(scalar_expression, x)에 대해 지정된 비교 값이 TRUE일 경우 TRUE를 반환합니다. 여기서 x는 단일 열 집합의 값입니다. 그러지 않으면 FALSE를 반환합니다.
설명
ALL의 경우 하위 쿼리에 의해 반환된 모든 값을 정확하게 비교하려면 scalar_expression이 필요합니다. 예를 들어 하위 쿼리에서 값 2와 3을 반환할 경우 scalar_expression<= ALL(하위 쿼리)은 2의 scalar_expression에 대해 TRUE로 계산됩니다. 하위 쿼리에서 값 2와 3을 반환할 경우에는 하위 쿼리 값(값 3)의 일부가 식의 조건을 만족하지 않으므로 scalar_expression = ALL(하위 쿼리)은 FALSE로 계산됩니다.
scalar_expression이 하위 쿼리에서 반환된 한 값에 대해서만 정확히 비교하도록 하는 문은 SOME | ANY(Transact-SQL)를 참조하세요.
두 식의 동등성을 비교하고 true 또는 false 결과를 보장하려면 IS [NOT] DISTINCT FROM(Transact-SQL)을 참조하세요.
이 문서에서는 하위 쿼리에 사용되는 경우의 ALL을 참조합니다. ALL은 UNION 및 SELECT에도 사용될 수 있습니다.
예제
다음 예제에서는 AdventureWorks2022 데이터베이스에 지정된 SalesOrderID
모든 구성 요소를 지정된 일 수로 제조할 수 있는지 여부를 결정하는 저장 프로시저를 만듭니다. 이 예제에서는 하위 쿼리를 사용하여 특정 DaysToManufacture
의 모든 구성 요소에 대한 SalesOrderID
값 수의 목록을 만든 다음, 모든 DaysToManufacture
가 지정한 일 수 범위에 있는지 확인합니다.
-- Uses AdventureWorks
CREATE PROCEDURE DaysToBuild @OrderID INT, @NumberOfDays INT
AS
IF
@NumberOfDays >= ALL
(
SELECT DaysToManufacture
FROM Sales.SalesOrderDetail
JOIN Production.Product
ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID
WHERE SalesOrderID = @OrderID
)
PRINT 'All items for this order can be manufactured in specified number of days or less.'
ELSE
PRINT 'Some items for this order can''t be manufactured in specified number of days or less.' ;
프로시저를 테스트하려면 SalesOrderID 49080
일이 필요한 한 개의 구성 요소 및 0일이 필요한 두 개의 구성 요소가 포함되어 있는 2
을 사용하여 프로시저를 실행합니다. 아래 첫 번째 문은 조건을 만족합니다. 두 번째 쿼리는 만족하지 않습니다.
EXECUTE DaysToBuild 49080, 2 ;
결과 집합은 다음과 같습니다.
All items for this order can be manufactured in specified number of days or less.
EXECUTE DaysToBuild 49080, 1 ;
결과 집합은 다음과 같습니다.
Some items for this order can't be manufactured in specified number of days or less.