如何确定有序SQL表中行的位置?

时间:2012-11-06 15:23:32

标签: mysql sql

我有一个用户表和一个'点'列。我想确定所有按'点'排序的用户的行数/地点。

我可以获得所有用户数据的结果,然后执行while循环,并在id等于必要的用户时停止。但我相信有一种更有效的方法,因为我的表将包含~100 000行。

2 个答案:

答案 0 :(得分:1)

试试这个:

SET @rownum = 0; 
Select sub.*, sub.rank as Rank
FROM
(
   Select *,  (@rownum:=@rownum+1) as rank
   FROM   users
   ORDER BY points 
) sub
WHERE rank = 15

答案 1 :(得分:0)

您需要记录的行号

Here's在MySQL中做到这一点的好方法

看起来像这样

SELECT rank_user.* 
FROM 
(
   SELECT @rownum:=@rownum+1 ‘rank’, p.* 
   FROM user u, (SELECT @rownum:=0) r   
   ORDER BY points DESC
) rank_user 
WHERE rank BETWEEN 2 AND 4;