【SQL Server】別テーブルのデータでUPDATEしたいときのSQLの書き方2パターン【JOIN/CONCAT】

【SQL Server】別テーブルのデータでUPDATEしたいときのSQLの書き方2パターン【JOIN/CONCAT】

はじめに

コジマです。

SQLをやっていると
別テーブルから更新対象のデータを取得したいときってありますよね。

それを実現するSQLのサンプルを紹介したいと思います。

こんな感じで書きます。

パターン1:JOINとUPDATE

UPDATE t1
SET t1.column1 = t2.column2
FROM table1 t1
JOIN table2 t2
  ON t1.pk1 = t2.pk2
WHERE 条件
;

テーブル同士JOINしてあげるだけでよいです。

パターン2:CONCATでUPDATE文作成

私はCONCATを使ってこんな使い方もします。
SQL Serverの書き方なので、ほかのDBMSだと書き方がかわったりするかもしれません。

SELECT
  t1.column1 AS before
  , t2.column2 AS after
  , CONCAT('UPDATE t1 SET t1.column1 = ', t2.column2, 'WHERE t1.pk1 = ', t1.pk1, ';') AS update_sql
FROM table1 t1
JOIN table2 t2
  ON t1.pk1 = t2.pk2
WHERE 条件
;

なにをやってるかというと、SELECTの結果でUPDATE文を作ってます。
コツはCONCATで生成するUPDATE文のWHEREの条件を主キーにすることで、更新対象を1件にすることです。

データの確認と更新用のSQL作成を同時にできるので、重宝しております。

さいごに

別テーブルのデータを使用してUPDATEするやり方を2パターン紹介してみました。
パターン1は他にも書いている人いると思いますが、パターン2のやり方は結構少ないんじゃないでしょうか。

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

もっと学びたい人はこちら

SQLをもっと学びたいエンジニアのためにおすすめのUdemy講座を紹介いたします!

SQLはじめましての人!まずあなたの3時間をください。
この講座でまずこれだけは覚えてくれ!という内容をしっかり押さえることができます。
SQLはプログラミング言語がなんであれ、システム開発に必要になります。
この講座を見て最低限必要な知識を身に着けて実践で貢献できるようになりましょう!
3時間で学ぶ SQL ・データベース 超入門【丁寧な解説+演習問題で SQL データ抽出の基本が身につく】標準 SQL

データベースの設計について学べる講座です。
設計について学べる教材は少ないので、実務でデータベースを触る人にはとてもうれしい講座です。
データベース講座1:データベース論理設計

ちょっとニッチに感じるかもしれませんが、SQLのインデックスを学ぶことができる講座です。
よい性能でSQLを運用するためにはインデックスの理解は必要不可欠です。
CRUD書いて満足するエンジニアを出し抜きましょう。
SQLServerのインデックスを理解して検索を速くする方法

気になった人はぜひ見てみてくださいね!

以上、コジマでした。


SQLカテゴリの最新記事