同じテーブルの別のレコードの値を使用したUPDATEの書き方がわからず調べていました。
備忘録的に残していこうと思います。
何分未熟者ですので、ご指摘等いただければと思います。
UPDATE FROM をほとんど使ったことがなかったので、その練習も含めて
やりたいこと
TableAの行a列1の値を、TableAの行b列1の値で更新する
以下参考にした記事です。(陳謝)
https://qiita.com/sugarboooy/items/7c4947594d502dddcc01
同じテーブルのほかの列の値を使用したUPDATE
こちらは比較的シンプル
UPDATE FROM を使い、同じテーブルをINNER JOINすればOK
正直UPDATE FROM の挙動を正しく理解できている気がしないのでその辺はおいおい
同テーブル別列の値
UPDATE a
SET
a.Column1 = b.Column2
FROM TableA a
INNER JOIN TableA b
ON
a.Column3 = b.Column3
WHERE
a.Column1 = 'hogehoge'
同じテーブルのほかの行の値を使用したUPDATE
今回の場合、以下のようなある値を2期間分保存するテーブルにおいて、
特定のタイミングで新しいほうの値を古いほうに移したい
キー | a | b | c |
---|---|---|---|
1 | 前期 | c | d |
2 | 当期 | a | b |
結合列を選択することでできました
同テーブル別行の値
UPDATE a
SET
a.Column1 = b.Column2
FROM TableA a
INNER JOIN TableA b
ON
--ここで、UPDATEしたい行と、データ元となる行を結合する
a.Column2 = '前期'
AND b.Column2 = '当期'
WHERE
a.Column1 = 'hogehoge'