こんにちはmorimori(@TatsunoriMorita)です。
最近仕事で、他人が書いたSQLを見ていたところ、『MERGE』という構文があることを初めて知りました。
自分の使っていたDBはSQLServerだったのですが、他のDBでも使えるのか気になって調べてみたところ、SQL-2003から標準のSQLに導入された構文とのことでした。
何ができる構文なのか簡単に説明すると、2つのテーブルを比較して、比較元のテーブルにデータが存在すれば、比較先のテーブルのデータで更新。データが存在しなければ、登録をするSQLを1文で書くことができます。
無駄に条件分岐で何行にもわたってSQLを書く場合と比べたらシンプルで良いですね。
ちなみに非標準の構文であるMySQLとSQLiteでは書き方が少し違うようです。
まとめ
プログラミングに慣れてくると、最低限実装する方法が分かってくるので、安易に同じ方法を取りがちになります。
言語のバージョンが上がって、今までよりシンプルに実装できる方法が追加されたりもするので、たまにはもっといい方法がないか立ち止まって調べてみると、新たな発見があっておもしろいかもしれませんね。