group by分组后获得每组中时间最大的那条记录
2017-11-22 16:53
1661 查看
用途:
GROUP BY 语句用于 对一个或多个列对结果集进行分组。例子:
原表:
现在,我们希望根据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 USER_ID, LAST_UPDATED_DATE DESC) b GROUP BY b.USER_ID;
其中:select * from t_iov_help_feedback order by USER_ID, LAST_UPDATED_DATE DESC 就相当于一个按照USER_ID升序, 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;
相关文章推荐
- 取出分组后每组的第一条记录(不用group by)按时间排序---转
- 取出分组后每组的第一条记录(不用group by)按时间排序
- 取出分组后每组的第一条记录(不用group by)按时间排序
- 取出分组后每组的第一条记录(不用group by)按时间排序
- mysql5.7分组查询group by,分组查询并且显示每组时间最新的一条记录
- [转]取出分组后每组的第一条记录(不用group by)按时间排序
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- 分组查询取最大时间记录的方法Oracle
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- 关于MYSQL group by 分组按时间取最大值的实现方法!
- 用Group by分组后,取每组的前几条记录
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- 关于MYSQL group by 分组按时间取最大值的实现方法!
- MYSQL group by 分组后只取最大、最小值对应的记录方法
- Mongo分组取每组最大的一条记录
- 关于MYSQL group by 分组按时间取最大值的实现方法
- 分组查询取最大时间记录的方法Oracle .
- 在SQL Server2005/2008中对记录进行分组,并获得每组前N条记录
- 在SQL Server2005/2008中对记录进行分组,并获得每组前N条记录
- mysql 分组 排序 取时间最大的一条记录