MySQL:为特定行获取行号(排名)

7

我有一个名为users的表格,其中有一列名为money_sent。我想按照money_sent列进行降序排序,并找出特定用户的“排名”。

例如,只有111个人比用户12392花费更多的钱,因此他们的排名是112。

我该如何查询这个信息?

3个回答

13

试试这个:

SELECT count(*) FROM users WHERE money_sent < (
    SELECT money_sent FROM users WHERE user = 'joe'
);

太棒了!一个简单而有效的想法! - Rui Curado

2
SELECT Row,user, money_sent
FROM (SELECT @row := @row + 1 AS Row, user, money_sent 
       FROM table1 order by money_sent desc) 
As derived1 

2
如果您还想获取用户的行以及该用户的排名,可以使用以下代码:
SELECT u1.*, COUNT(u2.user) 
FROM users u1
  LEFT OUTER JOIN users as u2 ON (u1.money_sent < u2.money_sent)
GROUP BY u1.user;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接