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

时间:2009-02-02 17:45:10

标签: mysql

我有一个users表,其中有一个名为money_sent的列。我想按money_sent降序排序此表,然后找出特定用户的“排名”。

例如,只有111人花费的钱比用户12392多,所以他们排名第112位。

我怎么能查询呢?

3 个答案:

答案 0 :(得分:13)

怎么样:

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

答案 1 :(得分: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 :(得分: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;