我有一个用户表和一个'点'列。我想确定所有按'点'排序的用户的行数/地点。
我可以获得所有用户数据的结果,然后执行while循环,并在id等于必要的用户时停止。但我相信有一种更有效的方法,因为我的表将包含~100 000行。
答案 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;