加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:23:25 所属栏目:PHP教程 来源:网络整理
导读:好的,所以我有一张表有以下内容 KEY username password score 以上列没有任何特定顺序. 我想向我的数据库发送一个用户名,让它根据其得分将该用户名的等级发回给我.例如,如果我在那里有10个人,那么第3个人的得分最高.当我通过第三人的用户名时,我希望它发回1.
好的,所以我有一张表有以下内容

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读