将 OPT_ID = 12的放在最前面,然后再根据创建时间

解决方案 »

  1.   

    THEN 1 ELSE 4 END
    1和4分别是什么意思呢?
      

  2.   

    CASE WHEN OPT_ID = 12 THEN 1 ELSE 4 END
    等价于
    if (OPT_ID  == 12)
        OPT_ID = 1
    else
        OPT_ID =4
      

  3.   

    这样子理解吧.你就把这个当成一个新的列,这列是 当OPT_ID==12的他就为1否他就为4
    所以这里的数据按你这个sql来说你写 1,2或者-1,0 或者1,1000 都是这个一样的效果 只是用来排序
      

  4.   

    谢谢大家的回复
    CASE WHEN OPT_ID = 12 THEN 1 ELSE 4 END--------------是我想要的结果
    CASE WHEN OPT_ID = 12 THEN 4 ELSE 1 END--------------是错误的结果
    这是为什么?
    或者大家推荐一下这方面的帖子。
    谢谢!!!
      

  5.   

    CASE WHEN OPT_ID = 12 THEN 1 ELSE 4 END
    意思是把OPT_ID=12的列单独列出来,对于单独里出来的OPT_ID=12的列应放在结果集的位置就有1或者4来决定,对于本例,1<4,那么就是把IPT_ID=12的结果靠前排列,其他结果在后,当然1或者4都可以用其他值代替,不是不可变的,只需要OPT_ID=12设定的值小于其他情况设定的值即可。
      

  6.   

    明白了,谢谢大家!!!
    这样更好理解!!!
    SELECT *,( CASE WHEN OPT_ID = 12 THEN 1 ELSE 4 END) as temp FROM kc_sale_order WHERE SALE_ORDER_STATE IN ('10','15','20','25','40','50','55') ORDER BY temp,CREATE_TIME DESC; 
      

  7.   

    相关的知识可以参考一下MYSQL官方免费手册中的说明和例子。
      

  8.   

    支持Rapidshare Freakshare Rapidgator Hotfile Keep2share Ryushare Filepost Lumfile Filemates Bitshare Filefactory Extabit Netload Uploaded.to Ul.to Ctdisk Sufile 等主流网盘会员直接高速下载!Ctdisk城通网盘/Dbank华为网盘/Sufile.com完全免费!http://wishuhappy.com/ [@nlbEjb0RbhmryBx2L/wm3A==]