replace intoは便利。

insertとupdateを合わせたようなsql。データが存在する場合は既存のレコードを置換(update)し、存在しない場合はinsertする。わざわざ、selectで取ってきて値があるかどうか確認してupdateかinsertする、なんてことはしなくていい。

上でupdateと書いたけど、mysqlのreplace intoは内部ではupdateではなくdelete-intoをしてるらしい。だから、auto_incrementなフィールドは値が変わってしまうので注意。キーがauto_incrementの場合はdelete-intoでもupdateと結果が一緒だから問題ないが。ほかのDBはしらん。
replaceコマンドではまりました。

■参考
データ置換(replace文)