创建表

CREATE TABLE `t_games` (
	`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
	`member_id` VARCHAR(255) NOT NULL COMMENT '会员ID' COLLATE 'utf8mb4_unicode_ci',
	`openid` VARCHAR(255) NOT NULL COMMENT 'openid' COLLATE 'utf8mb4_unicode_ci',
	`date` DATE NOT NULL COMMENT '玩游戏的日期',
	`time` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '游戏耗时',
	`nick_name` VARCHAR(255) NULL DEFAULT NULL COMMENT '姓名' COLLATE 'utf8mb4_unicode_ci',
	`avatar_url` VARCHAR(255) NULL DEFAULT NULL COMMENT '头像' COLLATE 'utf8mb4_unicode_ci',
	`created_at` TIMESTAMP NULL DEFAULT NULL,
	`updated_at` TIMESTAMP NULL DEFAULT NULL,
	PRIMARY KEY (`id`) USING BTREE
)COMMENT='参与游戏记录';

写入数据

INSERT INTO `t_games` (`id`, `member_id`, `openid`, `date`, `time`, `nick_name`, `avatar_url`, `created_at`, `updated_at`) VALUES (1, '1', '1', '2022-05-07', 100, 'xxx1', '111', '2022-05-07 20:52:39', '2022-05-07 20:52:39');
INSERT INTO `t_games` (`id`, `member_id`, `openid`, `date`, `time`, `nick_name`, `avatar_url`, `created_at`, `updated_at`) VALUES (2, '1', '1', '2022-05-07', 50, 'xxx2', '111', '2022-05-07 20:56:13', '2022-05-07 20:56:13');
INSERT INTO `t_games` (`id`, `member_id`, `openid`, `date`, `time`, `nick_name`, `avatar_url`, `created_at`, `updated_at`) VALUES (3, '2', '2', '2022-05-07', 50, 'xxx3', '222', '2022-05-07 20:58:32', '2022-05-07 20:58:32');
INSERT INTO `t_games` (`id`, `member_id`, `openid`, `date`, `time`, `nick_name`, `avatar_url`, `created_at`, `updated_at`) VALUES (4, '2', '2', '2022-05-07', 49, 'xxx4', '222', '2022-05-07 20:59:52', '2022-05-07 20:59:52');
INSERT INTO `t_games` (`id`, `member_id`, `openid`, `date`, `time`, `nick_name`, `avatar_url`, `created_at`, `updated_at`) VALUES (5, '3', '3', '2022-05-07', 49, 'xxx5', '333', '2022-05-07 21:00:30', '2022-05-07 21:00:30');
INSERT INTO `t_games` (`id`, `member_id`, `openid`, `date`, `time`, `nick_name`, `avatar_url`, `created_at`, `updated_at`) VALUES (6, '3', '3', '2022-05-07', 52, 'xxx6', '333', '2022-05-07 21:01:19', '2022-05-07 21:01:19');
INSERT INTO `t_games` (`id`, `member_id`, `openid`, `date`, `time`, `nick_name`, `avatar_url`, `created_at`, `updated_at`) VALUES (7, '4', '4', '2022-05-07', 49, 'xxx7', '444', '2022-05-07 21:17:41', '2022-05-07 21:17:41');
INSERT INTO `t_games` (`id`, `member_id`, `openid`, `date`, `time`, `nick_name`, `avatar_url`, `created_at`, `updated_at`) VALUES (8, '4', '4', '2022-05-07', 15, 'xxx8', '444', '2022-05-07 21:38:08', '2022-05-07 21:38:08');

查询每个用户游戏过关时间最短的

## 查询查询每个用户过关时间最短的时间是多少
SELECT member_id,MIN(`time`) AS min_time FROM t_games GROUP BY member_id;

## 将上述结果按照游戏过关时间进行排序
SELECT member_id,MIN(`time`) AS min_time FROM t_games GROUP BY member_id ORDER BY min_time DESC;

查询每个用户最后一次游戏时间

方法一

SELECT * FROM t_games WHERE id IN
(
SELECT MAX(id) FROM `t_games` GROUP BY member_id
);

弊端:显而易见,采用的是 IN 查询,所以在 IN 的数量太大的情况下,会直接报错,IN 可能会产生大量碎片

方法二

SELECT t1.*
FROM t_games t1
INNER JOIN (
    SELECT member_id, MAX(date) AS max_date
    FROM t_games
    GROUP BY member_id
) t2 ON t1.member_id = t2.member_id AND t1.date = t2.max_date;