2009-01-10 7 views
6

Quel est le meilleur moyen d'obtenir le rang des lignes en plus des données de ligne dans MYSQL? Par exemple, disons que j'ai une liste d'étudiants et que je veux me classer dans le GPA. Je sais que je peux commander par le GPA, mais quel est le moyen le plus rapide pour que MYSQL revienne au rang dans les rowdata que je récupère?Quelle est la meilleure façon de générer des rangs dans MYSQL?

+0

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

+0

double possible de [MySQL - Obtenez le numéro de ligne sur select] (http://stackoverflow.com/questions/2520357/mysql-get-row-number-on-select) –

Répondre

5

Cela renverra le rang rownum

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

La tienne semble beaucoup plus compliquée que la réponse de William. Quelle est la différence? –

+2

C'est une seule déclaration. William sont deux déclarations distinctes. C'est la raison pour laquelle c'est plus compliqué. –

6

Cela renverra le rang des étudiants, d'étudiant, et GPA.

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