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
zpfhbyx 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 同时使用实现组内排序 |