[SQL]UPDATEかもしれないしINSERTかもしれない場合のREPLACE

個人的に作っているサイトで、RSSクローラーを巡回させて手に入れた記事情報をDBに保存しておき、各記事のはてなブックマーク数を1時間置きに取得してhatebu_tableに追加していくというバッチを書きました。

===============================================================
本題からそれますがはてなブックマーク数を取得する方法は下記に。

http://api.b.st-hatena.com/entry.count?url=http%3A%2F%2Fwww.hatena.ne.jp%2F

といった風にurlというパラメータにURLを付加させてGETでリクエストを送ると、
平文ではてなブックマーク数が取得できます。
詳細ドキュメント ➡ http://developer.hatena.ne.jp/ja/documents/bookmark/apis/getcount
===============================================================


過去に取得したはてなブックマーク数にUPDATEをかけてあげて、過去にはてなブックマーク数を取得したことにない記事に対しては新規にINSERTをかけてあげます。
UPDATEなのかINSERTなのか、どこかでチェックして分岐するのめんどくさいなーって思っていたのですが、REPLACE INTOというSQL構文を発見しました。

REPLACE INTO hatebu_table (article_id,hatebu_count) VALUES(1,100);

上記のSQLを投げた場合、article_id=1のレコードがなかった場合は新規にはてぶ数100とINSERTし、既にあった場合ははてぶ数100とUPDATEします。

SQLって知らないし、調べないだけで便利な構文が意外とあったりするんですね。以上、覚書でした。

このブログ記事について

このページは、tatsuyaが2011年8月18日 00:51に書いたブログ記事です。

ひとつ前のブログ記事は「[SQL]GROUPでCOUNTした値を元にGROUPしてCOUNTする方法」です。

次のブログ記事は「[PHP]美人時計の画像を24時間分取得し保存する」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。