假如有以下状态的记录:1、2、3、4、5
3代表待确认,而用户希望能把状态为待确认的放在最前面,其他的状态按记录创建的时间排序,这个要怎么实现呢?
有一个蠢办法就是分开查,然后用union将两者组合起来,能有更简单的法子吗

解决方案 »

  1.   

    SELECT CASE
               WHEN STATUS = '3' THEN
                '03'
               ELSE
                STATUS
           END ORDER_ID
      FROM TABLE
     ORDER BY ORDER_ID;
      

  2.   

    可以试用一下以下的SQL语句:
    设你的状态字段名为:f_status,日期字段名为:f_date,表名为t_oneselect * from t_one order by instr(','||f_status||',',',3,') desc,f_date;
    用上面的SQL语句应该可以实现你的功能
      

  3.   

    select * from table
    order by instr('3',状态) desc,时间
      

  4.   

    SELECT * FROM TABLE
    ORDER BY INSTR(STATUS,'3') DESC,TIME ASC