TOP の使用による更新行数の制限
TOP 句を使用すると、UPDATE ステートメントで変更される行の数を制限できます。UPDATE ステートメントで TOP (n) 句を使用した場合、ランダムに選択される n 行に対して更新操作が実行されます。たとえば、ある中堅販売員の労働負荷を緩和するために、一部の顧客を若手の販売員に割り当てる場合を考えてください。次のクエリでは、ある販売員の顧客からランダムに 10 人を抽出して別の販売員に割り当てています。
USE AdventureWorks;
GO
UPDATE TOP (10) Sales.Store
SET SalesPersonID = 276
WHERE SalesPersonID = 275;
GO
TOP を使用して、意味のある日時順に更新を適用する必要がある場合は、サブセレクト ステートメントに ORDER BY を含めて TOP を使用する必要があります。次の例では、採用日の古い従業員上位 10 人の休暇時間を更新します。
UPDATE HumanResources.Employee
SET VacationHours = VacationHours + 8
FROM (SELECT TOP 10 EmployeeID FROM HumanResources.Employee
ORDER BY HireDate ASC) AS th
WHERE HumanResources.Employee.EmployeeID = th.EmployeeID;
GO