2009-01-10 19 views
6

Was ist der beste Weg, um den Rang der Zeilen zusätzlich zu den Zeilendaten in MYSQL zu erhalten?Was ist der beste Weg, Ränge in MYSQL zu generieren?

Zum Beispiel sagen, ich habe eine Liste von Studenten und ich möchte auf dem GPA rangieren. Ich weiß, dass ich nach GPA bestellen kann, aber was ist der schnellste Weg, um MYSQL den Rang in den rowdata zurückzugeben, die ich zurückbekomme?

+0

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

+0

Mögliche Duplikat [MySQL - Get Zeilennummer auf Wählen Sie] (http://stackoverflow.com/questions/2520357/mysql-get-row-number-on-select) –

Antwort

5

Dies wird wieder den Rang als rownum

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

Ihre sieht viel komplizierter als Williams Antwort. Was ist der Unterschied? –

+2

Es ist eine einzige Aussage. Williams sind zwei getrennte Aussagen. Das ist der Grund, warum es komplizierter ist. –

6

den Rang Studenten Dies wird zurückkehren, Studentenausweis und GPA.

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