我有一个像这样的MySQL表:
+----+------+
| id | score|
+----+------+
| 1 | 132 |
| 2 | 210 |
| 3 | 320 |
| 4 | 212 |
| 5 | 210 |
| 6 | 188 |
+----+------+
当我的游戏结束时,我想插入一个新记录的新记录:
INSERT INTO user_score(score) VALUE (378)
在插入新记录之后,我想找出记录的排名,所以我做了这样的事情:(礼貌地提到link)
SELECT id,score, @curRank := @curRank + 1 AS rank FROM scores p, (SELECT @curRank := 0) r ORDER BY score;
我在想是否有办法将它们结合起来?或者更好的方法吗?目的是使其更有效率和更高效率。 (花费的CPU / MySQL资源减少了。)
答案 0 :(得分:1)
将INSERT
和SELECT
合并为一个语句将无效。但是将您的查询重写为
SELECT LAST_INSERT_ID() AS lid
获取ID SELECT COUNT(*)+1 AS rank FROM user_score WHERE score>378
获得排名score
上有索引,那么会加快速度