Mysql升序排序但值为0的排在最后

今天写项目,遇到个问题,数据进项排序的时候要按照升序,但是值为0的要放在最后面,并且按照时间倒序,当时想了一会,没想到好的办法,最后只能借助度娘的力量,找到了解决办法


这里我们要orderby按照升序排序,但是值为0的要按照create_time倒序排序,这里我们可以这样解决

方法一:

SELECT id,create_time,orderby FROM `audit_system_file` WHERE `delete_tag` = 0 AND `tag` = 1 ORDER BY orderby!=0 desc,orderby,create_time desc

方法二:

SELECT id,create_time,orderby FROM `audit_system_file` WHERE `delete_tag` = 0 AND `tag` = 1 ORDER BY orderby=0 asc,orderby,create_time desc

总结:

select * from xxx order by x=0 asc, x

第一个排序关键字x=0的结果为false、true,x字段值为0的数据x=0结果为true,使用asc确保0排在最后面,对于x=0结果为false的数据,然后再按照x的值升序排列。

同理select * from xxx order by x!=0 desc, x

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 你有让自己的孩子成为伸手党吗? 或许你会问: 伸手党的定义是什么? 毫无感恩之心地无偿索要别人的劳动成果,或是要求...
    安湖阅读 1,781评论 0 1
  • 本来想在游戏中过一次不同的人生,但潜意识还是选择了和现实中相同的人生。哪怕只是一场游戏,当你全情投入的时候,也会做...
    若渺阅读 3,964评论 0 0
  • 聪明如我 不如你 这是我在看[太阳的后裔]冒出来的一句话,女人无时无刻不能不夸,但也不能降低自己的档位,算是幽默吧
    查派F阅读 2,338评论 0 0
  • 听说老包要出宫, 忙坏娘娘东西宫。 东宫娘娘烙大饼, 西宫娘娘剥大葱。 二版: 听说老包要出恭 忙坏东宫和西宫 东...
    屎倒淋头还嚼便阅读 9,961评论 0 0