MySQL: Insert or Update

Есть отличный проект Nakama https://heroiclabs.com но я продолжаю использовать свою реализацию Leaderboards и Profile Storage.

Вчера сделал небольшую оптимизацию SQL-запроса (да, я тот еще SQL-разработчик). Вместо нескольких запросов сделал один, который объединил в себе вставку, обновление и условие обновления.

'INSERT INTO `some_table`' +
' (`user_id`, `timestamp`, `user_name`, `score`)' +
' VALUES(?, NOW(), ?, ?)' +
' ON DUPLICATE KEY UPDATE' +
' `timestamp`=NOW(), `user_name`=?,' +
' `score`=GREATEST(`score`, VALUES(`score`))';

Для работы этого запроса поле `user_id` должно быть UNIQUE.

Leave a Reply

Your email address will not be published. Required fields are marked *