在 MySQL 5.7 中,可以使用子查询和变量来实现分组 row_number。以下是一个示例查询:
SELECT
t.id,
t.name,
t.grade,
(SELECT @rownum:=@rownum+1 FROM (SELECT @rownum:=0) r WHERE t.grade = r.grade) as row_num
FROM students t
ORDER BY t.grade DESC, t.name ASC;
该查询会将 students 表按照 grade 降序排序,然后按照 name 升序排序,并对同一 grade 的记录进行分组并计算行号。在子查询中使用变量 @rownum 来计算行号,并将其赋值给 row_num 列。
注意:在执行该查询之前,需要先执行以下命令来启用变量:
SET @rownum := 0;