MySql 分组查询并获取每组数据的最大值

1,568 阅读2分钟

人生的路到底有多远并不重要,当务之急是珍惜生命的每一秒;不管事情变得多坏,在不远的地方,相信总会有一些美好即将来临

MySql 当数据量大的时候,有人说需要添加索引,以及数据分页查询,但我要说的是不单单是这些,比如说加索引,什么样的索引效果最佳,索引实现的原理是什么样的,数据量大的时候我要查询一个最大值怎么办 等等一系列的细节。

如果你有兴趣可以关注一下公众号 biglead

本文章的主要内容是 根据用户的ID来分组查询并获取每组的最大值,如下图所示

在这里插入图片描述

我一张普通的积分记录表中,查询出符合条件的数据有3条,当然这是我针对一个用户来查询的,假如我需要获取这三条数据中的 task_correct 最大值的那一条记录,我们可以这样来写

SELECT
	a.user_name,
	a.task_num,
	a.task_correct,
	a.integral_num,
	a.integral_recoder_remark,
	a.screate_time 
FROM
	(
	SELECT
		COUNT(*),
		id,
		max( task_correct ) task_correct 
	FROM
		t_integral_recoder AS q 
	WHERE
		q.sta_mine_id = 54 
		AND q.category_one = "E0B2E1F8-498E-44" 
		AND q.category_two = "488863BE-9F55-4C" 
		AND q.user_name = "用户姓名" 
		AND q.screate_time BETWEEN "2021-06-01" AND "2021-07-31" 
	GROUP BY
		q.sta_user_id 
	) b
	INNER JOIN t_integral_recoder a ON a.id = b.id

查询结果如下 在这里插入图片描述