mysql5.7.10和mysql5.5.39两个版本对于group by函数的处理差异

原理还是没有搞清楚,在官网上看了一下,看的不是很清楚。一并都记录一下。

问题描述:

存在如下数据结构

sql:

求用户最近更新的那条记录

思路:

按照modify_time排序后按照user_id分组。

sql如下:

              SELECT
				*
			FROM
				(
					SELECT
						id,
						doc_ass_modify_time,
						user_id
					FROM
						health_report_assessment hra
					
					ORDER BY
						doc_ass_modify_time DESC
				) reportTemp
			GROUP BY
				req_user_id

改sql在 mysql5.5.39 查询结果为:

修改后的sql

                     SELECT
				*
			FROM
				(
					SELECT
						DISTINCT id,
						doc_ass_modify_time,
						user_id
					FROM
						health_report_assessment hra
					
					ORDER BY
						doc_ass_modify_time DESC
				) reportTemp
			GROUP BY
				req_user_id                

子查询中增加了distinct的关键字。

在两个版本中,查询均取到最新的数据。

在官网查到的资料

大体了解他的意思,但也没有看出来和group by 有多大的关系。

http://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html

先记录一下,欢迎拍砖。

 

原文地址:https://www.cnblogs.com/yimiyan/p/5823146.html