select row_number() over(partition by A order by B ) as rowIndex from table
比如取每个班级成绩第一的学生等等
oracle 和 sqlserver支持函数,mysql不行
这里给一个粗暴的方法:
两个行数
GROUP_CONCAT(A ORDER BY B)和substring_index
思路:
1、GROUP_CONCAT(fA ORDER BY B) 按照条件排序后拼装字段,默认逗号,4“,”分隔
2、substring_index 取第一个逗号前的数,如果按照成绩降序排列,就能取到第一名的 substring_index(GROUP_CONCAT(f.id ORDER BY f.dzrq DESC,fz.faid desc),',',1)
涉及复杂的逻辑可能需要自定义函数了