但查出来的结果出乎我的意料,你是不是也没想到,两列的时间字段竟然不一样!!!

由此想 MAX(l.learn_time)最大时间 应该是和 后面的learn.*记录没有直接关系的。

一开始是这样想的,通过时间逆排序,

select learn.*
from learn
where	learn.user_id = '14201109'
ORDER BY learn.learn_time DESC

然后在通过课程id分组应该就可以获取到了,但是排序order by必须放在分组group by 之后,像下面这样

select learn.*
from learn
where	learn.user_id = '14201109'
GROUP BY course_id
ORDER BY learn.learn_time DESC

结果发现learn_id 是1和6,通过group by分组之后它就只能取到的是这两条,这两条记录恰恰是时间最小的,而我们想要的是learn_id 为5和9的最大时间,经过这一番折磨,实在不知道怎么解决了,发了个求救信息,不一会儿,在同学的帮助下,就解决了只个问题,其实刚开始的思路是对的,就是先查到最大时间,再外边嵌套查询就好了,如下:

正确答案:

SELECT *
from learn
where learn.learn_time in (
			SELECT MAX(l.learn_time)
			FROM learn l
			where l.user_id = '14201109' 
			GROUP BY l.course_id

其实刚开始我也这样想过,但是我是把in写的等号“=”,结果一直报错说内嵌套只能查出来一条记录才可以,当时脑子短路,咋就没想到用in【/捂脸】【/捂脸】【/捂脸】,希望你们不要像我一样犯同样的错误。

突然想起来忘了说,我用的是mysql数据库

最后,大家如果发现我写的有错误的话,欢迎评论指出哦,共同进步。觉得我写的不错的,可以关注下哦^v^

看了很多分组之后获最大值sql博客,真的是满心欢喜,一试就凉,还得自食其力。 简单的三个字段,id,rid,online_date,目前就是想根据rid进行分组online_date中的最大值, 二、错误思路 最开始想的方法就是根据rid进行group by,然后用id进行倒序,来获最大值,后来发现group by之后又随机排序了,无法获得目标值。 SELECT id,rid... COUNT(*):统计表中所有行,包括NULL值。COUNT(1):与COUNT(*)类似,统计所有行。COUNT(列名):统计某列中非NULL值的数量。COUNT(DISTINCT 列名):统计某列中不重复的非NULL值。COUNT可与GROUP BY和HAVING等子句结合,进行复杂的分组统计和条件过滤。COUNT(*)和COUNT(1)在大多数数据库中性能相同,可以按习惯使用。 我们写SQL时,经常会遇到这个逻辑,按某个字段分组然后从每组按某个字段出最大的一条纪录,我们在oracle、mysql分别探讨一下实现的方法,现在我们开始吧。新建一张表 exam_results想得到的数据是 按照 type 分组 然后出每组中 results 最大的那几条纪录。结果应该是这三条纪录:方法一: 直接使用聚合函数查出来的结果如下: 这种比较简单,但是有个问题,查询结果不能展示出来class字段(其实也不能不可以,就是比较麻烦,需要修改数据库配置文件或 网上的一些找group by后某个字段的最大值方法: select * from (select * from table order by time desc) as num group by name 完全是无法得到结果的,因为还是group by会将name里的行按照name的主键id进行从小到达的排序,所以不会得到每个name的最大time行 所以我得到了一个新的方法,就是将... 假设我们有一个表 table_name,其中包含两个字段 group_field 和 other_field。在MySQL数据库中,我们经常需要对数据进行分组并获每个分组内的最大值,并且只需要获每个分组最大值对应的一条记录。在步骤一的基础上,我们需要获每个分组内的最大值。在步骤二的基础上,我们需要将原始表和分组查询结果进行连接,以获每个分组最大值对应的一条记录。在步骤三的基础上,我们需要获每个分组最大值对应的一条记录。接下来,我们将详细介绍每个步骤应该做什么,并提供相应的代码。 select A.id,A.goodsname as title,A.norms,A.status as gstatus,A.imgurls,A.uppertime,A.downtime,A.createtime as gcreatetime,A.updatetime as gupdatetime, A.isteam,B.id as defaultsku,B.pr...