サーチ…
構文
- UPDATE テーブル
SET column_name = value 、 column_name2 = value_2 、...、 column_name_n = value_n
WHERE 条件 ( 論理演算子 condition_n)
すべての行の更新
この例では、サンプルデータベースのCars Tableを使用しています。
UPDATE Cars
SET Status = 'READY'
このステートメントは、 'Cars'表のすべての行の 'status'列に、行セットをフィルタリングするWHERE
句がないため、「READY」に設定されます。
指定された行の更新
この例では、サンプルデータベースのCars Tableを使用しています。
UPDATE
Cars
SET
Status = 'READY'
WHERE
Id = 4
このステートメントは、ID 4の「Cars」の行のステータスを「READY」に設定します。
WHERE
句には、各行に対して評価される論理式が含まれます。行が基準を満たす場合、その値が更新されます。それ以外の場合は、行は変更されません。
既存の値の変更
この例では、サンプルデータベースのCars Tableを使用しています。
UPDATE Cars
SET TotalCost = TotalCost + 100
WHERE Id = 3 or Id = 4
更新操作には、更新された行の現在の値を含めることができます。この単純な例では、 TotalCost
は2行で100ずつ増えます。
- #3のトータルコストが100から200に増加しました
- #4のトータルコストは1254から1354に増加しました
列の新しい値は、以前の値から、または同じ表または結合された表内の他の列の値から派生することがあります。
別のテーブルからのデータでUPDATEする
以下の例は、 Customer
でもあり、 Employees
表に電話番号が設定されていない従業員のPhoneNumber
を記入しています。
これらの例では、サンプルデータベースのEmployeesテーブルとCustomersテーブルを使用しています。
標準SQL
相関サブクエリを使用した更新:
UPDATE
Employees
SET PhoneNumber =
(SELECT
c.PhoneNumber
FROM
Customers c
WHERE
c.FName = Employees.FName
AND c.LName = Employees.LName)
WHERE Employees.PhoneNumber IS NULL
SQL:2003
MERGE
を使用した更新:
MERGE INTO
Employees e
USING
Customers c
ON
e.FName = c.Fname
AND e.LName = c.LName
AND e.PhoneNumber IS NULL
WHEN MATCHED THEN
UPDATE
SET PhoneNumber = c.PhoneNumber
SQLサーバー
INNER JOIN
を使用した更新:
UPDATE
Employees
SET
PhoneNumber = c.PhoneNumber
FROM
Employees e
INNER JOIN Customers c
ON e.FName = c.FName
AND e.LName = c.LName
WHERE
PhoneNumber IS NULL
更新されたレコードのキャプチャ
場合によっては、更新されたばかりのレコードをキャプチャしたい場合もあります。
CREATE TABLE #TempUpdated(ID INT)
Update TableName SET Col1 = 42
OUTPUT inserted.ID INTO #TempUpdated
WHERE Id > 50
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow