Điều này sẽ xử lý các thứ hạng có cùng số điểm.
SELECT d.*, c.ranks
FROM
(
SELECT Score, @rank:[email protected]+1 Ranks
FROM
(
SELECT DISTINCT Score
FROM tableName a
ORDER BY score DESC
) t, (SELECT @rank:= 0) r
) c
INNER JOIN tableName d
ON c.score = d.score
// WHERE d.username = 'Helen'
ví dụ
KEY username password score Ranks
1 Anna 123 5 3
2 Bobby 345 6 2
3 Helen 678 6 2
4 Jon 567 2 4
5 Arthur ddd 8 1
để có hiệu suất tốt hơn, hãy thêm INDEX
trên cột Score
,
ALTER TABLE tableName ADD INDEX (Score)