
MySql的group by与oracle有所不同查询得字段可以不用写聚合函数查询结果取得是每一组的第一行记录。利用上面的特点可以利用mysql实现一种独特的排序首先先按某个字段进行order by,然后把有顺序的表进行分组这样每组的成员都是有顺序的而mysql默认取得分组的第一行。从而得到每组的最值。最近工作用的表有这样一个需求ip字段有重复取最后时间更新的ip。这是模拟表起初我用关联查询实现的SELECT t.id,t.ipFROM app tINNER JOIN(SELECT ip,MAX(updatetime) m_updatetimeFROM appGROUP BYip) t1ON t1.ipt.ip AND t.updatetimet1.m_updatetime但是这种方式效率太低查询太慢了。现在可以利用mysql的group by特性实现SELECTt.id,t.ipFROM (SELECT *FROM appORDER BY updateTime DESC) tGROUP BY t.ip先对更新时间降序排列再取每组的第一条记录。内容更新迁移说明后续 DDD、微服务、分布式、组件源码全套体系化实战连载统一更新至微信公众号互联网后端架构栈。CSDN 不再发布完整新系列文章公众号持续输出大厂落地案例、可直接复用的代码、线上踩坑复盘与架构方法论欢迎前往关注跟进完整连载内容。