使用 SET 子句變更資料
SET 指定所要變更的資料行,以及該資料行的新值。在符合 WHERE 子句搜尋條件的所有資料列中,以 SET 子句中所指定之值,來更新指定資料行的值。
以下範例會變更符合指定城市之資料列的郵遞區號值。
USE AdventureWorks2008R2;
GO
UPDATE Person.Address
SET PostalCode = '98000'
WHERE City = 'Bothell';
GO
若未指定 WHERE 子句,則會更新所有資料列。例如, 此陳述式會更新 SalesPerson 資料表中所有資料列內 Bonus、CommissionPct 與 SalesQuota 資料行的值。
USE AdventureWorks2008R2;
GO
UPDATE Sales.SalesPerson
SET Bonus = 6000, CommissionPct = .10, SalesQuota = NULL;
GO
計算資料行的值可以在更新作業中進行計算及使用。以下範例會使 Product 資料表中所有資料列內 ListPrice 資料行的值變成兩倍。
USE AdventureWorks2008R2 ;
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 2;
GO
SET 子句中使用的運算式也可以是僅傳回一個值的子查詢 。以下範例將修改 SalesPerson 資料表中的 SalesYTD 資料行,以反映 SalesOrderHeader 資料表中所記錄的最新銷售額。子查詢將彙總 UPDATE 陳述式中各個銷售人員的銷售額。
USE AdventureWorks2008R2;
GO
UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD +
(SELECT SUM(so.SubTotal)
FROM Sales.SalesOrderHeader AS so
WHERE so.OrderDate = (SELECT MAX(OrderDate)
FROM Sales.SalesOrderHeader AS so2
WHERE so2.SalesPersonID = so.SalesPersonID)
AND Sales.SalesPerson.BusinessEntityID = so.SalesPersonID
GROUP BY so.SalesPersonID);
GO