group by分组后获得每组中时间最大的那条记录

Posted cincenthuang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了group by分组后获得每组中时间最大的那条记录相关的知识,希望对你有一定的参考价值。

用途:
GROUP BY 语句用于 对一个或多个列对结果集进行分组。

 

原表: t_iov_help_feedback

技术图片

 

 


现在,我们希望根据USER_ID 字段进行分组,那么,可使用 GROUP BY 语句。

我们使用下列 SQL 语句:

SELECT ID,USER_ID,problems,last_updated_date from t_iov_help_feedback GROUP BY USER_ID;

结果集类似这样:

技术图片

 

 

 

可以看到上面的,结果的确是根据 USER_ID 进行分组了,但是返回的记录是 USER_ID 对应的每组 中最小的那条记录。也就是ID最小的那条。

现在我想分组后得到,last_updated_date 最大的那条记录。这怎么实现呢?

很简单,直接查询的表默认是以 ID 进行顺序排序的,因为分组的时候取的是每组中的第一条。所以只需要 使查询的表 按照 last_updated_date

倒叙排序就行了。

 

实现的SQL如下,这里使用了嵌套查询。

SELECT ID,USER_ID,problems,last_updated_date FROM (select * from t_iov_help_feedback order by LAST_UPDATED_DATE DESC) b
GROUP BY b.USER_ID;

其中:select * from t_iov_help_feedback  order by  LAST_UPDATED_DATE DESC 就相当于一个按照 last_updated_date

倒叙排序的表了。

查询结果如下:

 

现在取的就是每组中时间最大的那条记录了。

 

当遇到两个不同的表时,可以使用以下SQL:

select a.title, t.name, t.price from a 
inner join (select * from b order by id, price ) t on t.id = a.b_id 
group by a.b_id;

注:mysql5.7的版本 需要在order by 后面加上limit限制

转载:https://blog.csdn.net/u012660464/article/details/78605078

以上是关于group by分组后获得每组中时间最大的那条记录的主要内容,如果未能解决你的问题,请参考以下文章

sql:用group by分组后,每组随意取一个记录?

如何显示mysql分组中时间最大的一行记录

SQL中group by问题

取出分组后每组的第一条记录(不用group by)按时间排序

MSSQL 分组后取每组第一条(group by order by)

sql 分组后求每组中的最大值对应的那条数据