背景:

  • 查询一组数据,需要根据一个no分组再根据结束时间进行排序,可是,发现order by 之后的数据不正确,并不是像我预期中的那样。
  • 错误的sql
    SELECT
    	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
    
Logo

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

更多推荐