在 SQL Server 中,我們可以透過 TOP 子句來限制 UPDATE 語句所修改的資料列數。當 TOP (n) 與 UPDATE 搭配使用時,資料庫引擎會隨機選取 n 筆符合條件的資料列進行更新。這在需要批次處理或隨機抽樣更新時非常實用。
假設我們要將部分資深業務員的客戶轉交給新進業務員,以下範例會隨機抽取 10 位客戶,將其負責業務員從 ID 275 變更為 276:
USE AdventureWorks2008R2; UPDATE TOP (10) Sales.Store SET SalesPersonID = 276 WHERE SalesPersonID = 275; GO
若需依據特定順序(如入職日期)來更新前 N 筆資料,必須搭配子查詢與 ORDER BY 子句。下列範例更新入職最早的 10 名員工,增加其特休時數 8 小時:
UPDATE HumanResources.Employee
SET VacationHours = VacationHours + 8
FROM (
SELECT TOP 10 BusinessEntityID
FROM HumanResources.Employee
ORDER BY HireDate ASC
) AS th
WHERE HumanResources.Employee.BusinessEntityID = th.BusinessEntityID;
GO
這樣就能確保更新的是「入職最早」的 10 位員工,而非隨機選取。