MERGE文でデータの存在を確認せずにINSERTまたUPDATEを実行する方法

SQLServerではMERGE文を使うと更新先に該当のキーのデータがあるかないかをIF文で確認したりせずに1行でINSERTもしくはUPDATE文を切り替えて実行することができます。

MERGE文でデータの存在を確認せずにINSERTまたUPDATEを実行する方法

本来、ユニークキーが設定されているテーブルに対してデーターの追加、更新を行う際は、まず該当のデータが存在するかどうかのチェック(一旦SELECT)してからINSERTかUPDATEをIF文で切り替えて実行します。

ところがMERGE文を使えばこの事前チェックなしにINSERTかUPDATEを1行で実行できるようになります。

MERGE文の使い方

以下のSQLが実際のMERGE文の使い方になります。

#saki_tableテーブルに#moto_tableテーブルの内容がコピーされていますね。
(削除はされません。)

まとめ

MERGE文を使えばINSERTかUPDATEを1行で実行できるようになリ、ソースコードに無駄なIF文を書く必要がなくなるので大変重宝します。

以上、「MERGE文でデータの存在を確認せずにINSERTまたUPDATEを実行する方法」でした。