Ändern von Daten mithilfe der SET-Klausel
SET gibt die zu ändernden Spalten und die neuen Werte für die Spalten an. Die Werte in den angegebenen Spalten werden mit den in der SET-Klausel angegebenen Werten in allen Zeilen aktualisiert, die mit der Suchbedingung der WHERE-Klausel übereinstimmen.
Das folgende Beispiel ändert den Wert für die Postleitzahl für Zeilen, die einer angegebenen Stadt entsprechen.
USE AdventureWorks;
GO
UPDATE Person.Address
SET PostalCode = '98000'
WHERE City = 'Bothell';
GO
Falls keine WHERE-Klausel angegeben wird, werden alle Zeilen aktualisiert. Die folgende Anweisung aktualisiert z. B. die Werte in den Bonus
-, CommissionPct
- und SalesQuota
-Spalten für alle Zeilen in der SalesPerson
-Tabelle.
USE AdventureWorks;
GO
UPDATE Sales.SalesPerson
SET Bonus = 6000, CommissionPct = .10, SalesQuota = NULL;
GO
Die Werte von berechneten Spalten können berechnet und in einer Aktualisierungsoperation verwendet werden. Das folgende Beispiel verdoppelt den Wert in der ListPrice
-Spalte für alle Zeilen in der Product
-Tabelle.
USE AdventureWorks ;
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 2;
GO
Die in der SET-Klausel verwendeten Ausdrücke können auch Unterabfragen sein, die nur einen Wert zurückgeben. Das folgende Beispiel ändert die SalesYTD
-Spalte in der SalesPerson
-Tabelle, um die aktuellen Umsätze widerzuspiegeln, die in der SalesOrderHeader
-Tabelle aufgezeichnet wurden. Die Unterabfragen aggregieren die Umsätze für jeden Vertriebsmitarbeiter in der UPDATE
-Anweisung.
USE AdventureWorks;
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.SalesPersonID = so.SalesPersonID
GROUP BY so.SalesPersonID);
GO
Siehe auch
Konzepte
Ändern von Daten mithilfe der WHERE-Klausel
Ändern von Daten mithilfe der FROM-Klausel
Beschränken aktualisierter Daten mithilfe von TOP
Ändern von Daten mit UPDATE