要获得用户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
";
表格结构:
user_id - 得分
现在我想给用户3一些积分。我的表格是:
得分数(或用户数) - 等级+1。
因此,如果我有20个用户(或得分)并且用户3的排名是10,那么积分将是:
20 - 10 + 1 = 11 分。
PS :用户(或得分)=某些用户有多个得分。
如何使用此mysql查询获得分数(或用户)?
SQL FIDDLE http://sqlfiddle.com/#!9/ff4505/4
答案 0 :(得分:2)
检查一下......我希望它可以帮助你...
SELECT user_id,@all_user := (SELECT COUNT(*) FROM `results`) as all_count,((@all_user-score)+1) as rank FROM `results` WHERE user_id = 3
答案 1 :(得分:1)
改进答案
$sql = "SELECT @all_user := (SELECT COUNT(*) FROM `results`)
as all_count,((@all_user-score)+1) as rank FROM `results` WHERE user_id = 3";