Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MYSQL-基于多行获取单个用户的排名(位置)_Mysql_Ranking - Fatal编程技术网

PHP MYSQL-基于多行获取单个用户的排名(位置)

PHP MYSQL-基于多行获取单个用户的排名(位置),mysql,ranking,Mysql,Ranking,使用以下MySQL表: +---------+-----------+ | user_id | user_name | +---------+-----------+ | 1 | user 1 | | 2 | user 2 | | 3 | user 3 | | 4 | user 4 | | 5 | user 5 | +---------+-----------+ +---------+-----------

使用以下MySQL表:

+---------+-----------+
| user_id | user_name |
+---------+-----------+
|    1    |   user 1  |
|    2    |   user 2  |
|    3    |   user 3  |
|    4    |   user 4  |
|    5    |   user 5  |
+---------+-----------+
+---------+-------------+
| user_id | user_staff  |
+---------+-------------+
|    1    |  xxxxxx     |
|    1    |  xxxxxx     |
|    2    |  xxxxxx     |
|    2    |  xxxxxx     |
|    2    |  xxxxxx     |
|    3    |  xxxxxx     |
|    3    |  xxxxxx     |
|    4    |  xxxxxx     |
+---------+-------------+
此查询为我获取排名表:

SELECT usr.user_name, COUNT(stf.user_id) AS score 
  FROM table_stafs AS stf 
    LEFT JOIN table_users AS usr ON usr.user_id=stf.user_id 
  GROUP BY usr.id 
  ORDER BY score DESC

如何获取单个用户的位置?

如果需要排名,可以在查询结果中添加自动递增列,例如:

SELECT usr.user_id,COUNT(stf.*) AS score, @r := @r + 1 AS rank
FROM table_stafs AS stf, (SELECT @r := 0) a 
LEFT JOIN table_users AS usr ON usr.user_id=stf.user_id 
GROUP BY usr.id ORDER BY score DESC

position是按分数排序时的记录编号。我需要一个查询,以根据staff rows表的数量获取单个用户的职位,如这里所示?如果您认为这是答案,请建议网站上现有的问答材料(通过评论和投票)。这给了我表格中所有行的计数,而不是按用户id列出的单个用户的计数:/