LoginSignup
0
0

More than 1 year has passed since last update.

同じテーブルのほかの行を使用したUPDATE【SQL Server】

Posted at

同じテーブルの別のレコードの値を使用した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'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0