MySQL: получение номера строки (ранжирование) для конкретной строки - PullRequest
7 голосов
/ 02 февраля 2009

У меня есть таблица users, в которой есть столбец с именем money_sent. Я хочу упорядочить эту таблицу по money_sent в порядке убывания, а затем выяснить, какой «ранг» имеет конкретный пользователь.

Например, только 111 человек потратили больше денег, чем пользователь 12392, поэтому они будут иметь ранг 112.

Как я могу запросить это?

Ответы [ 3 ]

13 голосов
/ 02 февраля 2009

Как насчет:

SELECT count(*) FROM users WHERE money_sent < (
    SELECT money_sent FROM users WHERE user = 'joe'
);
2 голосов
/ 02 февраля 2009

Если вы также хотите получить строку пользователя вместе с рангом этого пользователя, вы можете использовать что-то вроде этого:

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;
2 голосов
/ 02 февраля 2009
SELECT Row,user, money_sent
FROM (SELECT @row := @row + 1 AS Row, user, money_sent 
       FROM table1 order by money_sent desc) 
As derived1 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...