从mySQL结果集中查找rownum以进行排名

时间:2010-12-15 01:00:25

标签: php mysql select nested

我有一个表来存储我游戏用户的分数 - 如果可能的话,我希望能够单独使用mySQL找到他们的排名(因为如果玩家的数量以指数方式增加,那么php循环时间会解析整个数据库将急剧增加。)

到目前为止,我已经能够得到这个声明

select @rownum:=@rownum+1 'rank', s.* from top100 s, (select @rownum:=0) r order by score desc 

返回一个应用了排名的结果集 - 然后我需要能够做的是使用子查询找到其中的单个项目,以便从前一个插入中找到最后一个insert_id的玩家。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

SELECT t.*,
       (SELECT COUNT(*)
          FROM top100 t2
         WHERE t2.score > t.score) AS rank
  FROM top100 t
 WHERE id = LAST_INSERT_ID()