2009-02-02 9 views
7

Tengo una tabla users que tiene una columna llamada money_sent. Quiero ordenar esta tabla por money_sent en orden descendente, y luego averiguar qué "rango" tiene un usuario específico.MySQL: Obtener un número de fila (clasificación) para una fila específica

Por ejemplo, sólo 111 personas han gastado más dinero del usuario 12392, por lo que habría rango 112.

¿Cómo podría consultar esto?

Respuesta

13

¿Qué tal:

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

Gran! ¡Una idea simple pero efectiva! –

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

Si también desea conseguir la fila del usuario junto con la fila de ese usuario, se puede usar algo como esto:

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; 
Cuestiones relacionadas