我有一个像这样的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资源)。
发布于 2014-04-18 00:47:57
将一个INSERT和一个SELECT组合成一个语句是行不通的。但是将您的查询重写为
SELECT LAST_INSERT_ID() AS lidSELECT COUNT(*)+1 AS rank FROM user_score WHERE score>378来获得这个级别如果您在score上有一个索引,将会加快速度。
https://stackoverflow.com/questions/23145670
复制相似问题