在公司项目的需求中要求,需要按照group by 用户id分组,并且按照创建时间来降序排序。所以就想当然的用group by和
order by连用,但是这样写,明显出来的数据不符合最后的效果。
数据库中的数据如下:
可以知道如果按照userId分组之后,选择每组userId中,age最大的,选择的一条记录应该是用户名为user1_3的用户。
但是sql语句执行后的效果如下:
SELECT a1.userId,a1.userName,max(a1.age) FROM `t_user` a1 GROUP BY a1.userId ORDER BY a1.age desc
通过上图,我们发现很明显,数据是对不上的,每一条的数据都不是一一对应的,所以统计的时候,并没有找到我们年龄最大的效果。
后来在网上查看,group by和order by连用的确会出现这样的问题。
网上很多资料显示,可以通过子查询来解决,但是通过测试,还是没有得到理想的效果