mysql分组排序+序号
第一种:
SELECT a.*,
(IF(@gid = a.language_id, @i := @i + 1, @i := 1)) as rnk,
(@gid := a.language_id) as pid
FROM grade as a, (SELECT @i := 0, @gid := 0) as b
ORDER BY a.language_id, a.score DESC;
# 注意不能把rnk写成rank, 会一直报错。
第二种:
SELECT a.*,
(SELECT COUNT(DISTINCT b.score) FROM grade b
WHERE b.score >= a.score AND a.language_id = b.language_id) rnk
FROM grade a
ORDER BY language_id, rnk;
浙公网安备 33010602011771号