> 文章列表 > mysql分组查询排序问题

mysql分组查询排序问题

mysql分组查询排序问题

有这样一张表 tableName: T

id code time
1 101 2023-02-21 10:00:00
2 102 2023-02-21 18:00:00
3 104 2023-02-20 10:00:00
4 102 2023-02-20 18:00:00

想要查询每天时间最大的一条数据,按照分组并且排序的sql应该是这样写的

select id, max(time) as maxTime from T group by date_fromat(time, '%y-%m-%d')

查询出来的数据是长这样

id time
1 2023-02-21 18:00:00
3 2023-02-20 18:00:00

这数据明显是不对的,id为 1 对应的时间应该是 2023-02-21 10:00:00
group by分组之后,用max函数的话,除了分组字段,其他字段依旧取的第一条。
多个地方查阅之后,依旧没有解决这个查询逻辑问题,好多博客都是写的这个max的函数。
最后决定用java流来处理这个查询逻辑问题。

list.stream().sorted().collect(Collector.toMap())