有一个SQL:
select id,pro,price From pros Where pro like '%A%B%C%'
Union
select id,pro,price From pros Where pro like '%A%' OR pro like '%B%' OR pro like '%C%' 要求对于最上面的select id,pro,price From pros Where pro like '%A%B%C%' 要总是排在第一位,下面的select id,pro,price From pros Where pro like '%A%' OR pro like '%B%' OR pro like '%C%' 则按id来倒序排
如果单纯在后面加和ORDER BY ID DESC,则会全部按ID来排,第一条也挤到下面去了。不知道高手是怎么处理的?谢谢

解决方案 »

  1.   

    select id,pro,price
    from
    (
    select 1 as px,id,pro,price From pros Where pro like '%A%B%C%'
    Union
    select 2,id,pro,price From pros Where pro like '%A%' OR pro like '%B%' OR pro like '%C%') t
    order by px,id
      

  2.   

    select
     id,pro,price
    from
    (
     select 1 as px,id,pro,price From pros Where pro like '%A%B%C%'
     union
     select 2,id,pro,price From pros Where pro like '%A%' OR pro like '%B%' OR pro like '%C%') t
    order by
     px,id
      

  3.   

    select id,pro,price
    from
    (
    select 1 as px,id,pro,price From pros Where pro like '%A%B%C%'
    Union
    select 2,id,pro,price From pros Where pro like '%A%' OR pro like '%B%' OR pro like '%C%')
    tt
    order by px,id
      

  4.   

    select id,pro,price From pros Where pro like '%A%B%C%'
    Union
    select  * from( 
    select top 999999 id,pro,price From pros Where pro like '%A%' OR pro like '%B%' OR pro like '%C%' order by id)T
      

  5.   

    我采用了,做法和上面各位一样原理,非常感谢!
    select id,pro,price,0 as ord From pros Where pro like '%A%B%C%'
    Union
    (select id,pro,price,1 as ord From pros Where pro like '%A%' OR pro like '%B%' OR pro like '%C%')
    order by ord ASC,id DESC