在MySQL中,在插入记录时知道排名的更好方法是什么?

时间:2014-04-18 00:37:51

标签: mysql sql

我有一个像这样的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资源减少了。)

1 个答案:

答案 0 :(得分:1)

INSERTSELECT合并为一个语句将无效。但是将您的查询重写为

  • SELECT LAST_INSERT_ID() AS lid获取ID
  • SELECT COUNT(*)+1 AS rank FROM user_score WHERE score>378获得排名
如果您在score

上有索引,那么

会加快速度