我需要让用户的排名(行号)尊重其他用户的积分。在我的古代代码中(从3年前开始),没有错误,但现在我尝试了相同的代码,而MySQL却给出了很多错误。
我的旧代码;
SELECT * FROM
(SELECT @rank := @rank + 1 AS rank, ID,nick,balance
FROM users , (SELECT @rank := 0) r
ORDER BY balance DESC
) k
WHERE k.nick = '$nickname'");
我需要获得这样的排名;
SELECT *rank* FROM users WHERE users who have more than 10 balance AND users have less than 100 balance
你能告诉我我的代码有什么问题以及如何解决这个问题吗?谢谢。
示例:
User 0 Balance 7
User 1 Balance 15
User 2 Balance 55
User 3 Balance 104
用户2的预期排名为2.(超过10,低于100。)
答案 0 :(得分:0)
SELECT FIND_IN_SET( balance, (
SELECT GROUP_CONCAT( balance
ORDER BY balance DESC )
FROM uye WHERE balance>50 AND balance<1000 )
) AS rank
FROM UYE
WHERE ID = '49'
这是我设法运行的答案。
答案 1 :(得分:0)
你能否使用:
SELECT ID,nick,balance,ROW_NUMBER()OVER(ORDER BY @rank AS)排名FROM users