MySQL

【MySQL】別テーブルのカラムの値でテーブルのカラムをUPDATEする

サイトを運用していると、仕様変更やメンテナンスの影響で、テーブルのデータ移行が発生するケースがあります。

簡単なものであれば SQL で更新したり、ダンプしたデータをシェルで加工してリストアする程度で済みますが、複雑なものになればバッチプログラムを書いたりすることもありますよね。

今回は、SQL で事足りるパターンではあるのですが、同じキーカラムを持った別のテーブルにある特定のカラムの値で UPDATE をしたいという場面に遭遇したので、それを実現したいと思います。

テーブル構成とUPDATE文

仮に、テーブルA(table_a)とテーブルB(table_b)が以下の構成になっているとします。

テーブル カラム1(主キー) カラム2
table_a id title
table_b id title

今回は、テーブルA(table_a)の title カラムに、テーブルB(table_b)の title カラムの値を反映したいという要件を満たす SQL を考えます。

ざっくり書くと以下のようになります。

できるだろうとは思っていましたが、あまり遭遇しないケースなので、いざ SQL を書こうと思うとちょっと考えますね。

複数のテーブルを使った更新処理というのがレアだとは思いますが、できるってことを知っておくだけでもいつか役に立つかもしれません。