2009-01-10 13 views
6

¿Cuál es la mejor manera de obtener el rango de las filas además de los datos de fila en MYSQL?¿Cuál es la mejor forma de generar rangos en MYSQL?

Por ejemplo, supongamos que tengo una lista de estudiantes y quiero estar en el GPA. Sé que puedo ordenar por el GPA, pero ¿cuál es la forma más rápida de que MYSQL devuelva el rango también en los rowdata que recibo?

+0

http://dba.stackexchange.com/questions/13703/get-the-rank-of-a-user-in-a-score-table –

+0

duplicado posible de [MySQL - Obtener número de fila en select] (http://stackoverflow.com/questions/2520357/mysql-get-row-row-number-on-select) –

Respuesta

5

Esto devolverá el rango que rownum

SELECT @rownum := @rownum + 1 rownum, 
     t.* 
    FROM (SELECT @rownum:=0) r, 
     (SELECT * FROM students ORDER BY gpa DESC) t; 
+0

La tuya parece mucho más complicada que la respuesta de William. ¿Cual es la diferencia? –

+2

Es una declaración única. William's son dos declaraciones separadas. Esa es la razón por la cual es más complicado. –

6

Esto devolverá el rango de los estudiantes, carné de estudiante, y GPA.

set @rownum := 0; 
SELECT @rownum := @rownum + 1 AS rank, student_id, gpa 
    FROM `students` ORDER BY gpa DESC 
Cuestiones relacionadas