2009-02-02 90 views
7

我有一个users表,它有一个名为money_sent的列。我想按照money_sent的降序排列这张表,然后找出具体用户的“等级”。MySQL:获取特定行的行号(排名)

例如,只有111人花的钱比用户12392,所以他们会排名112

我怎么能查询这个?

回答

13

如何:

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

太好了!一个简单而有效的想法! – 2013-09-03 14:26:53

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;