動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
SQL

パターン③ MERGE 型 UPDATE — Upsert の決定打 (地雷つき)

出典: SQL Server UPDATE … FROM SELECT 3パターン — 業務SE が JOIN / CTE / MERGE を本番で使い分ける判断軸パターン③ MERGE 型 UPDATE — Upsert の決定打 (地雷つき)

パターン③ MERGE 型 UPDATE — Upsert の決定打 (地雷つき) (sql)#3edff919d8a5
-- products に対して、categories マスタの全 id を Upsert
-- (既存 category_id があれば name を更新、なければ INSERT)
MERGE INTO products AS tgt
USING (
    SELECT id, name FROM categories WHERE active = 1
) AS src
ON tgt.category_id = src.id
WHEN MATCHED THEN
    UPDATE SET tgt.category_name = src.name
WHEN NOT MATCHED BY TARGET THEN
    INSERT (category_id, category_name) VALUES (src.id, src.name);
-- ★ WHEN NOT MATCHED BY SOURCE は書かない (障害対応中の鉄則)
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
  • id: #3edff919d8a5
  • lines: 12
  • extracted: 2026-06-10

Source収録記事

この snippet は記事の「パターン③ MERGE 型 UPDATE — Upsert の決定打 (地雷つき)」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。

同じ記事から

4
図鑑トップ