LoginSignup
7
6

More than 5 years have passed since last update.

SQL Serverでテーブルを差分更新する

Last updated at Posted at 2017-08-09

更新型のテーブル(例えば、各種マスタやユーザ情報を保存してあるテーブル)を分析用のデータベースに保存する場合、多くはテーブルを作り直したり、データを丸ごと入れ直したりすることで最新の状態を保つが、テーブルのサイズが極端に大きく、かつ設定された更新頻度での差分がそんなにない場合は「MERGE」を使用して、存在しない行または、更新がかかった行のみ取り込むことで、差分のみ更新するほうが効率的な場合がある。

以下は基本の構文。公式ドキュメントはこちら

--base_tableをもとにtarget_tableを差分更新する
MERGE INTO target_table AS a
USING (SELECT columnA,
          columnB,
          columnC from base_table) AS b 
--マッチしているかの判定条件
ON (a.columnA = b.columnA)
--マッチしている行の処理(UPDATE)
WHEN MATCHED THEN
UPDATE SET columnA = b.columnA,
           columnB = b.columnB,
           columnC = b.columnC
--マッチしていない行の処理(INSERT)
WHEN NOT MATCHED THEN
INSERT (columnA,
        columnB,
        columnC)
VALUES (b.columnA,
        b.columnB,
        b.columnC)

7
6
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
7
6