UPDATEでSELECT文を書きたい場合、方法はいくつかあるが自分が便利だと思うものを。
例)テーブルB で、テーブルAの列を更新したい場合
UPDATE テーブルA
SET 列1 = B.列2
FROM テーブルA A
INNER JOIN テーブルB B ON A.キー1 = B.キー1
WHERE A.列 = [更新対象の条件]
SET 列1 = B.列2
FROM テーブルA A
INNER JOIN テーブルB B ON A.キー1 = B.キー1
WHERE A.列 = [更新対象の条件]
この構文の便利なところは、SELECT文のSQLの結果を事前に確認できるところ。
上記のSQLのFROM句以下はそのままで、
SELECT *
FROM テーブルA A
INNER JOIN テーブルB B ON A.キー1 = B.キー1
WHERE A.列 = [更新対象の条件]
FROM テーブルA A
INNER JOIN テーブルB B ON A.キー1 = B.キー1
WHERE A.列 = [更新対象の条件]
とすると、更新対象のレコードと、更新する値を事前に確認できる。
これで全レコード書き換えちゃったみたいなミスもなくなりますね。