php – 在给定用户名时,从无序的MySql数据库中获取基于分数的排名

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 在给定用户名时,从无序的MySql数据库中获取基于分数的排名脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,所以我有一张表有以下内容

KEY   username   password   score

以上列没有任何特定顺序.

我想向我的数据库发送一个用户名,让它根据其得分将该用户名的等级发回给我.例如,如果我在那里有10个人,那么第3个人的得分最高.当我通过第三人的用户名时,我希望它发回1.

这可能吗?

我一直在尝试这样的事情

$result = MysqL_query("SELECT * From tablename where username='$username' ORDER BY score DESC");

但它似乎没有给我行号

解决方法

这将处理具有相同分数的排名.

SELECT  d.*,c.ranks
From
        (
          SELECT    score,@rank:=@rank+1 Ranks
          FROM
                  (
                      SELECT  DISTINCT score 
                      FROM    tableName a
                      ORDER   BY score DESC
                  ) t,(SELECT @rank:= 0) r
        ) c 
        INNER JOIN tableName d
            ON c.score = d.score
// WHERE   d.username = 'Helen'

> SQLFiddle Demo (Ranking with duplicates)
> SQLFiddle Demo (with filtering)

例如

KEY     username    password    score   Ranks
1       Anna        123         5       3
2       Bobby       345         6       2
3       Helen       678         6       2
4       Jon         567         2       4
5       Arthur      ddd         8       1

为了获得更好的性能,请在列分数上添加INDEX,

ALTER TABLE tableName ADD INDEX (score)

脚本宝典总结

以上是脚本宝典为你收集整理的php – 在给定用户名时,从无序的MySql数据库中获取基于分数的排名全部内容,希望文章能够帮你解决php – 在给定用户名时,从无序的MySql数据库中获取基于分数的排名所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。