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; 

原文网址:https://www.cnblogs.com/CharlieLau/p/6737243.html

posted @ 2020-11-12 13:03  二二二狗子  阅读(865)  评论(0)    收藏  举报