为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 MySQL SELECT 语句获取排名位置

如何从 MySQL SELECT 语句获取排名位置

PHP
桃花长相依 2023-12-15 10:43:14
我正在尝试获取 MySQL SELECT 语句的排名值(MySQL 不是我太熟悉的东西)。此查询以正确的顺序(通过更多的统计数据)为我提供了我正在寻找的正确结果,但我需要从结果中获取特定值。SELECT id, stats,@curRank := @curRank + 1 AS rankFROM statistics.web_stats p, (SELECT @curRank := 0) r ORDER BY stats DESC;给了我这个预期的结果:id,stats,rank999,291,11137,82,21084,79,31111,60,41097,55,51094,51,61109,50,71112,49,81154,44,91082,36,10我需要做什么来获取任何特定 id 的排名值,例如,在我的 PHP 代码中,如何找到 id 1111 的排名位置(以返回“4”的排名值)?我不得不用锄头进一步从结果中提取值。我是否需要以某种方式保存它们,或者我可以进一步扩展 MySQL 查询吗?
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

您可以使用以下任一解决方案:


您需要使用子查询来维护排名位置。

这将为您提供排名为 4 的结果:


SELECT * 

FROM

(

    SELECT id, stats,

    @curRank := @curRank + 1 AS rank

    FROM statistics.web_stats p, (SELECT @curRank := 0) r 

    ORDER BY stats DESC

) AS stat

WHERE rank = 4;

您甚至可以使用LIMIT OFFSET进行查询,因为它们已经按顺序排列:

    SELECT id, stats,

    @curRank := @curRank + 1 AS rank

    FROM statistics.web_stats p, (SELECT @curRank := 0) r 

    ORDER BY stats DESC 

    LIMIT 4, 1


查看完整回答
反对 回复 2023-12-15
  • 1 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信