select * from X
where X.a like '11%'
or X.a like '12%'
or X.a like '13%'
or ……查询结果是:
12
13
11我想让查询出来的结果是按照我select语句中like的先后顺序显示,也就是
11
12
13为什么用上面的select不行呢?

解决方案 »

  1.   

    select * from X
    where X.a like '11%'
    or X.a like '12%'
    or X.a like '13%'
    or …… 
    order by  a
      

  2.   

    select * from (select a from X 
    where X.a like '11%' 
    or X.a like '12%' 
    or X.a like '13%' 
    or …… ) b order by b.a嵌套一层查询在排序就好了
      

  3.   

    大家可能理解错了。不是要按X.a的升序排序,而是按照select语句like的顺序。我重新写下我的问题吧。
    select * from X 
    where X.a like '12%' 
    or X.a like '11%' 
    or X.a like '13%' 
    or …… 查询结果是: 
    12 
    13 
    11 我想让查询出来的结果是按照我select语句中like的先后顺序显示,也就是 
    12 
    11 
    13 怎么修改我的select呢?
      

  4.   

    select a from (
    select a,rownum rn from X 
    where X.a like '11%'
    union 
    select a,rownum+1 rn from X 
    where X.a like '12%' 
    select a,rownum+2 rn from X 
    where X.a like '13%' )
    order by rn
      

  5.   

    select a from ( 
    select a,rownum rn from X 
    where X.a like '11%' 
    union 
    select a,rownum+1 rn from X 
    where X.a like '12%' 
    union 
    .
    .
    .
    union 
    select a,rownum+1 rn from X 
    where X.a like 'XX%' 
      

  6.   

    select a from ( 
    select a,rownum rn from X 
    where X.a like '11%' 
    union 
    select a,rownum+1 rn from X 
    where X.a like '12%' 
    union 



    union 
    select a,rownum+1 rn from X 
    where X.a like 'XX%')
      

  7.   

    没办法
    只能按上面union (最好是union all),或者order by case when .. like '11%' then 1 when .. then 2 when .... end