假设我有一个具有以下列的表:
p_id
userid
points
假设这些列有超过5000条记录。因此,我们实际上拥有具有积分的用户。每个用户都有一个唯一的行来记录他们的积分。想象一下,每个用户都可以通过在网站上点击某个地方来获得积分。当他们点击时,我会更新数据库以记录他们获得的积分。
因此,我们有一个包含5000多个人拥有积分的记录的表,对吧?现在我想按照他们的积分(降序)对它们进行排序,这样如果我运行一个MySQL查询,积分最高的用户将会出现在页面顶部。
我可以通过简单地运行像这样的查询来实现:
SELECT `p_id` FROM `point_table` ORDER BY `points` DESC
这个查询可以按点数降序返回所有记录。
好的,我的问题来了,现在(当它排序了),我想显示每个用户实际上是排名第几。所以我想给每个用户类似于这样的东西:“您是5374个用户中的第623个”。问题是我无法指定这个“623”数字。
我想运行一个查询,它应该按点数对表进行排序,然后“搜索”或计算行号,找出他们的记录在哪里,然后将该值返回给我。
有谁能帮我建立这个查询吗?这将是一次真正的大帮助。谢谢。
order by
将在选择变量之后进行评估。请参见https://dev59.com/7HE85IYBdhLWcg3w9orw#29846430中的警告。 - Pacerier