2009-02-02 11 views
7

Mam tabelę users, która ma kolumnę o nazwie money_sent. Chcę zamówić tę tabelę przez money_sent w porządku malejącym, a następnie dowiedzieć się, co "ranga" konkretnego użytkownika.MySQL: Uzyskiwanie numeru wiersza (ranking) dla określonego wiersza

Na przykład tylko 111 osób spędziliśmy więcej pieniędzy niż Użytkownika 12392, więc byliby Ranking 112.

Jak mogę zapytać to?

Odpowiedz

13

Jak o:

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

świetnie! Prosty, ale skuteczny pomysł! –

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

Jeśli też chcesz dostać wiersz użytkownika wraz z rangi tego użytkownika, można użyć coś takiego:

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; 
Powiązane problemy