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())