php - 根据MySQL数据库中的积分获取用户排名

标签 php mysql codeigniter model

我的 codeigniter 应用程序模型中有一个函数,它返回按点降序排列的行列表。这样做是为了获取具有最高点的行。

public function top_points()
    {
        $this->db->order_by('points', 'desc'); 
        $query=$this->db->get('player', 50);
        $data = $query->result_array();
        return $data;
    }

这可以很好地返回最高 50 分的数据。

但是,我想在我正在查询的 Player 表中找到特定玩家的位置/排名。我想通过 id 找到特定的玩家。

public function get_player_rank($player_id)
    {
            $this->db->where('player_id', $palyer_id); 
        $this->db->order_by('points', 'desc'); 
        $query=$this->db->get('player');
        $data = $query->result_array();
        return $data;
    }

我想使用类似的方法来获取由 $id 指定的玩家的位置。就像根据他获得的积分进行排名一样。

我如何得到这个?

最佳答案

尝试

$sql = " 
SET @rownum=0;
SELECT player_id, rank 
FROM (
      SELECT player_id, @rownum := @rownum +1 AS rank FROM  `player` 
      ORDER BY  `points` DESC
     ) AS D
WHERE D.player_id=?";

$result = $this->db->query($sql,array($palyer_id))->row_array();

或者你可以尝试

$sql = " 
         SELECT player_id, rank 
         FROM (
                SELECT player_id, @rownum := @rownum +1 AS rank
                FROM  `player` , (SELECT @rownum :=0 ) r
                ORDER BY  `points` DESC
              ) AS D
         WHERE D.player_id=?";
$result = $this->db->query($sql,array($palyer_id))->row_array();

关于php - 根据MySQL数据库中的积分获取用户排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21284478/

相关文章:

php - Doctrine - 自引用实体 - 禁止获取 child

php - 让 Composer (php 依赖管理器)在 docker 镜像构建上运行

curdate() 函数的 mysql 抛出语法错误

mysql - 如何在另一个表中使用搜索时使用 MySQL 更新表

php - 为什么 mysql_connect 会破坏我的 .php?

php - PHP下如何调用python脚本文件?

php - 关键字 highlight 是在 PHP preg_replace() 中高亮显示高亮

php - base_url().'assets/works 提供 css/images/js 位置,但 js 未在 codeigniter 中运行

php - MySQL-排序后插入行

php - 排序计算数据以在 php 中对我的数据进行排名