排名 MySQL 查询中的用户数

Number of users in a ranking MySQL query

要获得用户 3 的排名,我正在使用此查询(它工作正常):

$sql = "SELECT 
score,
FIND_IN_SET(score, 
(
SELECT GROUP_CONCAT(score 
ORDER BY score DESC)
FROM results)
) AS rank
FROM results
WHERE user_id = 3
";

Table结构:

user_id - 分数

现在我想给用户3一些积分。我的公式是:

分数(或用户)数量 - 排名 + 1。

所以如果我有20个用户(或分数),用户3的排名是10,那么积分将是:

20 - 10 + 1 = 11 点。

PS: users (or score) = 一些用户有一个以上的分数。

如何使用此 mysql 查询获得分数(或用户)的数量?

SQL FIDDLE http://sqlfiddle.com/#!9/ff4505/4

检查这个...希望对您有所帮助...

SELECT user_id,@all_user := (SELECT COUNT(*) FROM `results`) as all_count,((@all_user-score)+1) as rank FROM `results` WHERE user_id = 3 

改进答案

$sql = "SELECT @all_user := (SELECT COUNT(*) FROM `results`) 
        as all_count,((@all_user-score)+1) as rank FROM `results` WHERE user_id = 3";