一张表有很多数据,客户需要显示的时候把靠近今天的排在前面,我只知道顺序,倒叙,这种需求第一次听到,有没有大神帮我解决下啊,真心求教。

解决方案 »

  1.   

    你这种情况可以用类似这种方法实现,假如有id,name,order3个字段
    select *
    from (
       select id,(case when (name like 'a1%') then 1
           when name like 'a2%' then 2
           else 3 end) as nameStr,order
       from table1
    ) tmp
    order by tmp.nameStr,order
    先按照指定的规则排,再按照原来的顺序排,你可以把case when那里的条件改成你要的效果的条件,我这没有数据库,大概就是这样一个思路
      

  2.   

    select tmp.o,tmp.col1,tmp.col2 from (select date-sysdate o,col1,col2 from tab) tmp order by tmp.o
      

  3.   


    我的表work 里面有id name tdate(就是我说的时间排序) 这几个字段  到时候具体该怎么写啊,麻烦帮下我 谢谢