關於mysql成績排名,網上大部分只是order by簡單排序,忽略了成績相同並列名次的問題。
定義了一個表score結構為:
mysql隨數據庫中意添加一些數據。
SELECT * FROM score;
查詢結果為:
我的解決方案:
SET @score = 0; SET @sort = 1; SET @num = 0; SELECT id, stundetNo, score, sort FROM ( SELECT id, stundetNo, score, @num: = @num + 1, IF (score = @score, @sort, @sort: = @num) AS sort, @score: = score FROM score ORDER BY score DESC ) AS t;
結果為:
或者:
SELECT id, stundetNo, score, ( SELECT count(*) + 1 FROM score s WHERE s.score > score.score ) sort FROM score
結果為: