本文主要是介绍 MySQL 输出结果时的 Record 的序号问题,及排序问题 包括 严格递增, 重复不连续, 重复连续等。
1. 准备工作
我们先设定一个应用场景, 某贪吃蛇小游戏,每个用户信息包括 id 和昵称, id 唯一。
每结束一局,生成一条记录, 包括记录id, 完成时间,用户 id, 得分。
首先创建用户表 t_user
, 并插入测试数据:
成绩表 t_snake_score
, 并插入测试数据:
2. 正式工作
1. 将结果按照 score 从大到小, created_at 从小到大排序, 并生成排序
以下为 3 种序号方式:
1. 严格递增: 1,2,3,4,...
2. 重复不连续: 1,2,2,4,...
3. 重复连续: 1,2,2,3,...
对应 MySQL 语句
查询结果如下:
|
|
2. 找到每个 user_id 的最佳表现,如果相同,选择最先(created_at)的一个
对应 MySQL 语句
|
|
查询结果如下:
3. 找到每个 user_id 的最佳 top N 表现,如果user 的 第 N 个有相同,选择最先(created_at)的一个
假设 N = 2, 对应 MySQL 语句
|
|
查询结果如下: