踩坑杂谈二:MYSQL分组组内排序

一些孩子 ,特别是新入门程序员,给你一个需求,比如查出所有发布记录中所有发布版本最新操作的集合

孩子如果这么写,就犯错了

select 
 version,time
from 
  table
group by version
order by time desc

 正确的写法是

select * from
(select 
 version,time
from 
  table
order by time desc) t
group by version
order by time desc

 需要注意的是,网上一些文章,抄来抄去,都没在外层group by后面再加一个order by

你如果不加,其实是升序,那结果还是不对。

还有,有的同学想到max函数,max函数可以,看你怎么用,下面这种就不对,给你两张图片,比对下,就知道了

想要用正确的max必须使用

group by having time = max(time) where ....

自己脑补

猜你喜欢

转载自jdkleo.iteye.com/blog/2393834