我有一个包含id列和得分列的表,我想根据得分列对表进行排序,然后找到正在加载页面并向他显示他/她位置的特定用户。例如,告诉他“你的位置是第40位”。 我知道如何对查询进行排序:
SELECT id,score FROM `table` ORDER BY `score` DESC
但是在排序之后如何找到特定身份证的位置?
答案 0 :(得分:1)
您不需要order by
。代替:
select 1 + count(*)
from table t
where t.score > (select t2.score from table t2 where id = $id);
答案 1 :(得分:0)
试一试:
SELECT @rownum:=@rownum+1 ‘rank’, id, score FROM table t, (SELECT @rownum:=0) r ORDER BY score DESC;
这将创建一个列并在每条记录中增加1。