0

我正在研究如何在有序 SQL 记录集中获取记录的位置

这是一个在线排行榜,我已经将最后提交的分数的 id 设置为 $myID,所以现在我需要获取它得到的排名。

我会这样订购它们;

SELECT * FROM leaderboards ORDER BY score DESC 

我要在语句中添加什么才能获得 id 的特定位置

4

2 回答 2

2

最常见的做法是:

SET @rowcount = 0;
SELECT lb.*, (@rowcount := @rowcount + 1) as 'position' 
  FROM leaderboards lb ORDER BY score DESC

整个查询看起来像

SET @rowcount = 0;
SELECT rc.position 
  FROM (
    SELECT lb.id, (@rowcount := @rowcount + 1) as 'position' 
      FROM leaderboards lb ORDER BY score DESC
  ) rc
  WHERE rc.id = $myID
于 2013-08-22T17:21:19.360 回答
0

这将给出预期的结果

SELECT count(id) FROM leaderboards where score >= (
    select score from leaderbords where id = $myID
)
于 2013-08-22T17:21:12.830 回答