ぬるぽ

ゆるくプログラミングなどを語っていくブログ

SQLで条件によってINSERTとUPDATEを使い分ける方法

こんにちはmorimori(@TatsunoriMorita)です。

 

最近仕事で、他人が書いたSQLを見ていたところ、『MERGE』という構文があることを初めて知りました。

自分の使っていたDBSQLServerだったのですが、他のDBでも使えるのか気になって調べてみたところ、SQL-2003から標準のSQLに導入された構文とのことでした。

MERGE (SQL) - Wikipedia

 

何ができる構文なのか簡単に説明すると、2つのテーブルを比較して、比較元のテーブルにデータが存在すれば、比較先のテーブルのデータで更新。データが存在しなければ、登録をするSQL1文で書くことができます。

無駄に条件分岐で何行にもわたってSQLを書く場合と比べたらシンプルで良いですね。

 

ちなみに非標準の構文であるMySQLSQLiteでは書き方が少し違うようです。

www.mysqltutorial.org

www.sqlitetutorial.net

 

まとめ

プログラミングに慣れてくると、最低限実装する方法が分かってくるので、安易に同じ方法を取りがちになります。

言語のバージョンが上がって、今までよりシンプルに実装できる方法が追加されたりもするので、たまにはもっといい方法がないか立ち止まって調べてみると、新たな発見があっておもしろいかもしれませんね。