mysql 同一字段使用group by 后实现order by 取值
众所周知 group by 和 order by 一起使用时,会先使用group by 分组,group by 默认取第一条记录(mysql默认升序),而后面的order by 排序是group by执行之后的排序结果,所以如果只使用groub by 并不能获取最新的数据。
网上常见的解决方案是通过子查询,先进行order by desc, 然后group by 获取的第一条就是最新的
.
后来,我发现了还有一种比较懒的写法
SELECT id,MAX(creattime) AS creattime FROM table WHERE status = 1 GROUP BY uid
利用MAX的优先级高于group by ,可以不使用子查询的方法实现降序。
注:以上解决方案仅作参考,没有做过性能对比,请针对具体业务选择实现方式。