【Snowflake】Snowflake ~ Merge Into ~

■ はじめに

Snowflake の Merge Into について扱う。

目次

【1】Merge Into
【2】構文
【3】サンプル

【1】Merge Into

* 2番目のテーブルまたはサブクエリの値に基づいて、
 テーブルの値を挿入、更新、削除

https://docs.snowflake.com/ja/sql-reference/sql/merge.html

【2】構文

MERGE INTO <target_table>
  USING <source>
  ON <join_expr> -- Tableだけでなくサブクエリも指定可能
  WHEN MATCHED [ AND <case_predicate> ] THEN
    UPDATE SET <col_name> = <expr> [ , <col_name2> = <expr2> ...
  WHEN NOT MATCHED [ AND <case_predicate> ] THEN
    INSERT [ ( <col_name> [ , ... ] ) ] VALUES ( <expr> [ , ... ] )

【3】サンプル

-- マージしたいテーブル「target_table」
MERGE INTO target_table t
  -- 結合するテーブル「source_table」を指定
  USING source_table s
  -- 結合条件「t.id = s.id」を指定
  ON t.id = s.id
  -- ★1:値が一致した場合(Update/Delete用)
  WHEN MATCHED THEN
    -- 値が一致した場合のアクションを指定
    UPDATE
      SET
        t.delete_flag = 0
  -- ★2:値が一致しない場合(Insert用)
  WHEN NOT MATCHED THEN
    -- 値が一致しなかった場合のアクションを指定
    INSERT
      (
        id,
        name,
        delete_flag
      )
    VALUES
      (
        s.id,
        s.name,
        s.delete_flag
      );

参考文献

https://dev.classmethod.jp/articles/snowflake-stream-try/
https://qiita.com/Intel0tw5727/items/1ab1cb144564d3b516bf

関連記事

Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world
https://dk521123.hatenablog.com/entry/2021/11/22/212520