我正在研究如何在有序 SQL 记录集中获取记录的位置
这是一个在线排行榜,我已经将最后提交的分数的 id 设置为 $myID,所以现在我需要获取它得到的排名。
我会这样订购它们;
SELECT * FROM leaderboards ORDER BY score DESC
我要在语句中添加什么才能获得 id 的特定位置
最常见的做法是:
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
这将给出预期的结果
SELECT count(id) FROM leaderboards where score >= (
select score from leaderbords where id = $myID
)