2017-06-17 32 views
0

用下面的MySQL表:PHP 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 

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

+0

的位置的记录数为您排序得分。 – hakre

+0

我需要一个查询来获取单个用户的职位,这个职位是基于职员行数 –

+0

这里的东西吗? https://stackoverflow.com/q/3333665/367456 – hakre

回答

0

您可以在查询结果中添加一个自动递增列,如果你想行列,例如:

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 
+0

如果您认为这是答案,请在网站上提供现有的问答资料(通过评论和近距离投票)。 – hakre

+0

这给了我table_staff中的所有行的计数,而不是user_id的单个用户的计数:/ –

+0

@PhoxerRobertoBaglieri更新了答案.. –