表table1 中字段id,url(地址),title(标题),body(内容),查询表table1中url(地址)或title(标题)或body(内容)含“baidu”的记录,要求:url(地址)含“baidu”的排在前面,title(标题)含“baidu”的排在其后,body含“baidu”的排在最后!
我的答案:
select a.* ,
case when url like '%baidu%' then 1
case when title like '%baidu%' then 2
case when body like '%baidu%' then 3
else 4 end new
from table1 
where url like '%baidu%' 
or title like '%baidu%' 
or body like '%baidu%' 
order by new

解决方案 »

  1.   

    你可以按url,title ,body分别查询,并都增加一个new项
    然后合成一个排序
      

  2.   

    create table ta_1 as 
    select 'baidu' url ,'dd' title,'baiduxx' body
    from dual
    union 
    select 'baidu' url ,'baidu' title,'baiduxx' body
    from dual
    union
    select 'xx' url ,'baidu' title,'xx' body
    from dual
    union
    select 'baidu' url ,'xx' title,'xx' body
    from dual
    union
    select 'xx' url ,'xx' title,'baidu' body
    from dual
    union
    select 'baidu' url ,'baidu' title,'baidu' body
    from dual
    select a.* , 
    case when url like '%baidu%' then 1 
     when title like '%baidu%' then 2
     when body like '%baidu%' then 3 
    else 4 end new 
    from ta_1  a
    where url like '%baidu%'  
    or title like '%baidu%'  
    or body like '%baidu%'  
    order by new很好啊 这样