Mysql group by 然后再 order by,但不能按最新时间查询出来...

2021-05-31 13:06:46 +08:00
 uti6770werty
SELECT * FROM `testyyy`.`DLLog` GROUP BY `proc` ORDER BY `logtime` DESC;

打算查询出 proc 为分组,logtime 最新(降序),但 logtime 是升序的,显示的是最早时间的,语法上是不能这样使用?
3089 次点击
所在节点    MySQL
22 条回复
crazytudou
2021-05-31 13:09:11 +08:00
select * 用 group by ?没明白你想分啥组。。。
iyaozhen
2021-05-31 13:10:46 +08:00
只会显示 proc 组中 logtime 倒序后的第一条,并不是全部都按 logtime 倒序。你需要再加个查询排下序
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`;

那你应该是需要这样的效果
7Qi7Qi
2021-05-31 13:18:58 +08:00
select proc, max(logtime) from `testyyy`.`DLLog` group by proc order by max(logtime) desc 这样?
zpfhbyx
2021-05-31 13:36:40 +08:00
😂 top k 问题?
menghuan
2021-05-31 13:44:38 +08:00
3 搂正解
zhangysh1995
2021-05-31 13:46:08 +08:00
考虑一下 window function,用 partition by proc 然后排序
lshero
2021-05-31 13:53:03 +08:00
rank over partition
lichao
2021-05-31 14:13:35 +08:00
这是 MySQL 比较坑的地方,严格的数据库这里应该报错
lichao
2021-05-31 14:20:02 +08:00
@lichao 本身就会报错。。。
rockyliang
2021-05-31 14:25:12 +08:00
不是很懂你想怎样排序,是每个分组都留下 logtime 最新的那一行,然后整个结果集再按 logtime DESC 排序?
uti6770werty
2021-05-31 17:18:02 +08:00
@setsunakute 我好像看懂了意思,只是这个要出结果要很久,我这里是 70 多秒才能出来。。。

@rockyliang 是的,每个分组留下 logtime 最新的那一行,然后按 logtime DESC 排序,人话就是:要看每个 proc,最后的 logtime 的整行全部列的内容(*)。。。
tame619
2021-05-31 17:18:04 +08:00
SELECT * from LOG l
left join
(
select
max(logtime),ID
from LOG
GROUP BY proc
)a on a.ID=l.ID
where a.ID is not null
ORDER BY l.logtime desc
tame619
2021-05-31 17:21:28 +08:00
inner join
keepeye
2021-05-31 17:26:30 +08:00
不要用 order by,select max(logtime)
tame619
2021-05-31 17:55:53 +08:00
直接在 max 完,套一层 select,不用 join 我太蠢了
onhao
2021-05-31 21:28:55 +08:00
https://wuhao.pw/archives/178/
当 group by 遇上 order by 后总感觉语句是对的,然而结果却...
ricadro
2021-05-31 23:10:58 +08:00
mysql 没有开窗函数 只能子查询查询出最新的时间然后在 groupby
egfegdfr
2021-06-01 09:16:04 +08:00
group by 和 order by 不能同时使用,需要拆开放到子查询
leonme
2021-06-01 09:45:00 +08:00
@lichao 喷错了……2333

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/780304

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX