文章标题只是举例子,实际情况是这样的。
我们是报社出版商行业,要根据书籍的状态作一个排序。`state` VARCHAR(10) NULL DEFAULT '0000' COMMENT ' 资源状态1已下架 2三审拒绝 3三审通过 4二审拒绝 5二审通过 6一审拒绝 7一审通过 8待审核实际对应的代码:
待审核   0000
一审通过 1000
一审拒绝 2000
二审通过 1100
二审拒绝 1200
三审通过 1111
三审拒绝 1120
已下架     1110我们要让排序的结果是这样子降序的
待审核(0000) > 一审通过(1000) > 一审拒绝(2000) > 二审通过(1100) > 二审拒绝(1200) > 三审通过(1111) > 三审拒绝(1120) > 已下架(1100)这些代码是乱序的, 我要如何编写order by语句?

解决方案 »

  1.   

    order by  FIELD(state,0000,1000,2000,1100,1200,1111,1120,1110); 
      

  2.   

    @acAndcc 麻烦再看一下, 谢谢。
      

  3.   

    那就分成两个结果来查,先查test=1的结果集,在查test= 0的结果集并排序,最后把这两个结果集union 合并起来就可以啦
      

  4.   

    order by if(查test=1,null, field(....))
      

  5.   

    麻烦 新建字段,一个update更新,123456的,再select
      

  6.   

    order by field(state ,'2','4','0','1','3')
      

  7.   

    我觉得可以简单点,加个排序字段
    排序字段可以这么写 
    select Case  审核状态  when  0000 then 0
    when 1000 then 1
      else ''
     end as '起个别名
    然后Order by 的时候就按这个字段进行排序就好了,Case里面再把其它的加进去就好
      

  8.   

    用 case ,再 order byselect *,case when permit_use=2 then 0 when permit_use=0 then 1  else 2 end as odbfg from mytable order by odbfg