mysql計算排名,獲取行號rowno
學生成績表數據
SELECT * FROM table_score ORDER BY score DESC;
獲取某個學生成績排名並計算該學生和上一名學生成績差,是並列排名
SELECT *, (SELECT count(DISTINCT score) FROM table_score AS b WHERE a.score<b.score)+1 AS rank, #獲取排名,並列 (SELECT b.score FROM table_score AS b WHERE b.score>a.score ORDER BY b.score LIMIT 1)-a.score AS subtract #獲取和上一名學生成績的差
FROM table_score AS a WHERE a.s_id = 13; #獲取學生周一的成績排名和與上一名的成績差
獲取所有學生成績排名-並列排名
SELECT *, (SELECT count(DISTINCT score) FROM table_score AS b WHERE a.score<b.score)+1 AS rank #獲取排名-並列 FROM table_score AS a ORDER BY rank; #獲取學生成績排名
獲取所有學生成績排名,不是並列排名。計算行號進行排名
SELECT a.*, (@rowNum:=@rowNum+1) AS rank #計算行號
FROM table_score AS a, (SELECT (@rowNum :=0) ) b ORDER BY a.score DESC;