mysql 中 group by 再 order by 排序失效
group by 注意点
·
背景:
- 查询一组数据,需要根据一个no分组再根据结束时间进行排序,可是,发现order by 之后的数据不正确,并不是像我预期中的那样。
错误的sqlSELECT lp.ls_equipment_no, lp.ls_produce_end_time FROM busi_ls_produce lp WHERE lp.ls_produce_status = 4 AND lp.is_delete = 0 AND lp.ls_produce_org_id = 100 GROUP BY lp.ls_equipment_no ORDER BY CAST( lp.ls_equipment_no AS UNSIGNED ) ASC, lp.ls_produce_end_time DESC
原因:
- 因为先分组了,分组只是根据no分组,并没有和结束时间有关系,所以可能这个结束时间就不正确。
解决方法:
- 使用Max()函数
SELECT lp.ls_equipment_no, lp.ls_produce_end_time, MAX( lp.ls_produce_end_time ) AS produceEndTime FROM busi_ls_produce lp WHERE lp.ls_produce_status = 4 AND lp.is_delete = 0 AND lp.ls_produce_org_id = 100 GROUP BY lp.ls_equipment_no ORDER BY CAST( lp.ls_equipment_no AS UNSIGNED ) ASC

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)