MySQL中group by 与 order by 一起使用有坑

https://blog.csdn.net/m__l__/article/details/90544444

https://blog.csdn.net/zj20142213/article/details/81073428

 

见上述文章描述:问题以及group by原理

 

生产中也遇到类似的问题,group by根据分组字段进行分组,此时获取的数据再进行order by排序其实是没用的,除非group by的分组字段恰好是order by排序字段。

 

解决方法:子查询

获取最早使用某账号的3个用户id:账号可以关联多个用户id,每个用户id又可能在数据库中存在多条记录,所以需根据用户id进行分组,分组的同时找到该用户id最早的一笔记录,对其进行排序后取前3条记录即可。

SELECT
	a.member_id
FROM
	(
		SELECT
			min(create_time) create_time,
			member_id //和账号关联的用户id
		FROM
			withdraw w
		WHERE
			account = 123456 //账号
		GROUP BY
			member_id
	) a
ORDER BY
	a.create_time ASC
LIMIT 3

 

 

 

 

你可能感兴趣的:(数据库)