1

我有一个用户表和一个“积分”列。我想确定按“点”排序的所有用户的行数/位置。

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

4

2 回答 2

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
于 2012-11-06T15:27:44.283 回答
0

您需要记录的行号

这是在 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;
于 2012-11-06T15:27:53.510 回答