美文网首页
Mysql升序排序但值为0的排在最后

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

作者: 上善丨若水 | 来源:发表于2018-10-19 09:28 被阅读7次

    今天写项目,遇到个问题,数据进项排序的时候要按照升序,但是值为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

    相关文章

      网友评论

          本文标题:Mysql升序排序但值为0的排在最后

          本文链接:https://www.haomeiwen.com/subject/yqzezftx.html