获取行号

时间:2016-02-20 09:41:29

标签: php mysql sql

我需要让用户的排名(行号)尊重其他用户的积分。在我的古代代码中(从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。)

2 个答案:

答案 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