![]() | 1 crazytudou 2021-05-31 13:09:11 +08:00 select * 用 group by ?没明白你想分啥组。。。 |
![]() | 2 iyaozhen 2021-05-31 13:10:46 +08:00 只会显示 proc 组中 logtime 倒序后的第一条,并不是全部都按 logtime 倒序。你需要再加个查询排下序 |
![]() | 3 setsunakute 2021-05-31 13:16:44 +08:00 SELECT *,(select logtime from `testyyy`.`DLLog` as a where a.proc = b.proc order by logtime desc limit 1) FROM `testyyy`.`DLLog` as b GROUP BY `proc`; 那你应该是需要这样的效果 |
![]() | 4 7Qi7Qi 2021-05-31 13:18:58 +08:00 select proc, max(logtime) from `testyyy`.`DLLog` group by proc order by max(logtime) desc 这样? |
5 justseemore 2021-05-31 13:36:40 +08:00 top k 问题? |
6 menghuan 2021-05-31 13:44:38 +08:00 3 搂正解 |
7 zhangysh1995 2021-05-31 13:46:08 +08:00 考虑一下 window function,用 partition by proc 然后排序 |
![]() | 8 lshero 2021-05-31 13:53:03 +08:00 rank over partition |
![]() | 9 lichao 2021-05-31 14:13:35 +08:00 这是 MySQL 比较坑的地方,严格的数据库这里应该报错 |
![]() | 11 rockyliang 2021-05-31 14:25:12 +08:00 不是很懂你想怎样排序,是每个分组都留下 logtime 最新的那一行,然后整个结果集再按 logtime DESC 排序? |
12 uti6770werty OP @setsunakute 我好像看懂了意思,只是这个要出结果要很久,我这里是 70 多秒才能出来。。。 @rockyliang 是的,每个分组留下 logtime 最新的那一行,然后按 logtime DESC 排序,人话就是:要看每个 proc,最后的 logtime 的整行全部列的内容(*)。。。 |
13 tame619 2021-05-31 17:18:04 +08:00 via iPhone |
14 tame619 2021-05-31 17:21:28 +08:00 via iPhone inner join |
![]() | 15 keepeye 2021-05-31 17:26:30 +08:00 不要用 order by,select max(logtime) |
16 tame619 2021-05-31 17:55:53 +08:00 via iPhone 直接在 max 完,套一层 select,不用 join 我太蠢了 |
17 onhao 2021-05-31 21:28:55 +08:00 https://wuhao.pw/archives/178/ 当 group by 遇上 order by 后总感觉语句是对的,然而结果却... |
![]() | 18 ricadro 2021-05-31 23:10:58 +08:00 via iPhone mysql 没有开窗函数 只能子查询查询出最新的时间然后在 groupby |
19 egfegdfr 2021-06-01 09:16:04 +08:00 group by 和 order by 不能同时使用,需要拆开放到子查询 |
![]() | 21 lepig 2021-06-01 10:37:19 +08:00 好像 select*,max(logtime)就可以。之前做过一个类似的需求 |
![]() | 22 zhaofq 2021-06-01 10:37:44 +08:00 TOP K 问题 8.0 版本直接用开窗函数 低版本用子查询 MySQL 不支持 order by 和 group by 同时使用实现组内排序 |