前提:
MySQL 数据表中存储多个用户多个科目的成绩,每个用户的每个科目都记录为一条数据,大致结构如下:
需求:
总成绩相同,则比较 科目A 成绩,高分者排名靠前,如果 科目A 也相同则比较 科目B 成绩,依次比下去。
我的解决:
创建统计表,记录数据如下:总分score_count,得分详情[A+50,B+50,C+50..] score_info(将每个科目的得分都 + 50 使之成为长度相同的值):
查询排名时,只需使用 order by 实现排名:
该需求解决方案应该很多,将数组元素解析成字符串进行排序是一个很笨的解法,求更优解;