ALL (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
比較純量值與單一資料行集的值。
語法
scalar_expression { = | <> | != | > | >= | !> | < | <= | !< } ALL ( subquery )
引數
scalar_expression
這是任何有效的運算式。
{ = | <> | != | > | >= | !> | < | <= | !< }
這是一個比較運算子。
subquery
這是傳回單一資料行結果集的子查詢。 所傳回資料行的資料類型必須與 scalar_expression 的資料類型相同。
這是一個受限制的 SELECT 陳述式,不允許使用 ORDER BY 子句和 INTO 關鍵字。
結果類型
布林值
結果值
若各組 (scalar_expression、x) 的指定比較都是 TRUE (其中 x 是單一資料行集中的值),則傳回 TRUE。 否則會傳回 FALSE。
備註
ALL 需要正面比較 scalar_expression 與子查詢所傳回的每個值。 例如,如果子查詢傳回 2 和 3 的值,則 scalar_expression<= ALL (子查詢) 會針對值為 2 的 scalar_expression 評估為 TRUE。 如果子查詢傳回 2 和 3 的值,scalar_expression = ALL (子查詢) 就會評估為 FALSE,因為子查詢 (值為 3) 的某些值不符合運算式準則。
如需要求正面比較 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
來執行程序,其具有一個需要 2
天時間來製造的組件,以及兩個需要 0 天來製造的組件。 下列的第一個陳述式符合此準則, 第二項查詢則不符合。
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.