MySQLで下記のクエリーでUPSERT操作ができる。

ON DUPLICATE KEY UPDATE <col> = <val>

upsertとは?
tableにレコードがなければINSERT, 存在すればUPDATEという操作

使い方

下記のクエリーでusersテーブルに新しいユーザーを挿入する。もし該当ユーザーが存在の場合は、deviceを"ios"に、updated_atを今の時間に更新する:

INSERT INTO users 
    (`user_id`, `username`, `device`, `updated_at`)
VALUES
    (1, "foobar", "ios", CURRENT_TIMESTAMP)
ON DUPLICATE KEY UPDATE `device` = "ios", `updated_at` = CURRENT_TIMESTAMP;

usersテーブルのprimary_keyはuser_idという想定

単純の更新ではなく、インクリメント操作もできる:

ゲーム中ユーザーアイテムの数を増やす例

INSERT INTO items 
    (`user_id`, `item_id`, `qty`)
VALUES
    (1, 1, 1)
ON DUPLICATE KEY UPDATE qty = qty + 1;

itemsテーブルのprimary_keyは[user_id, item_id]という想定