玩家 1 已完成游戏并获得 10 分。仅当该分数是该用户的最高分时,我们才应保存该分数。我如何在单个查询中完成此任务? 我试过这个:
INSERT INTO highscore("score", "player") values(10, 1)
WHERE (SELECT MAX(score) as hs FROM highscore WHERE player = 1) < 10;
谢谢
最佳答案
丑陋的是mysql不支持用where条件插入值,但是你可以通过这样做来作弊:
INSERT INTO highscore (score, player)
SELECT 10, 1 FROM dual
WHERE (SELECT max(score) FROM highscore WHERE player = 1) < 10
如果分数高于 10,则不会插入任何行,否则将创建包含您需要的值的行。它也比触发器更容易,而且我相信它的成本也更低。
关于mysql - 仅当新值最高时才插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23944534/