我正在做一個遊戲的數據庫,我有一個排行榜。當用戶生成特定分數並且他們不在表格中時,我想將它們添加到表格中,但是如果它們已經在表格中,我只想更新分數,如果它們的新分數低於它們的分數老得分(比如高爾夫,越低越好)。該表有3列:名稱,值和EntryTime。名字是關鍵。始終插入但有條件更新的Upsert?
目前我與
INSERT INTO BasicEntries (Name, Value, EntryTime) VALUES (@name, @score, NOW()) ON DUPLICATE KEY UPDATE `Value` = @score, `EntryTime` = NOW();
我試着加入WHERE
到年底無條件upserting但我不斷收到有關自己的SQL語法錯誤。我可以將邏輯分成SELECT
,它確定用戶名是否已經存在,然後從那裏獲得UPDATE
或INSERT
,但我很好奇這個問題的單線程是什麼樣子。
如何修改上述行,以便它繼續INSERT
時的名字是不是已經在表中,但只會UPDATE
如果@score
小於現有Value
?