select ID,name from t
order by (case 关键词1 when '计算机' then 排名1 else 0 end)
        +(case 关键词2 when '计算机' then 排名2 else 0 end)

解决方案 »

  1.   

    select ID ,name from talbe where 关键词1='计算机' or 关键词2='计算机'
      

  2.   

    select ID,name from t
    where (case 关键词1 when '计算机' then 排名1 else 0 end)
            +(case 关键词2 when '计算机' then 排名2 else 0 end) > 0order by (case 关键词1 when '计算机' then 排名1 else 0 end)
            +(case 关键词2 when '计算机' then 排名2 else 0 end) desc
      

  3.   

    select ID,name
    from table
    where 关键词1 = '计算机' or 关键词2 = '计算机'
    order by (case 关键词1 when '计算机' then 排名1 else 0) +
             (case 关键词2 when '计算机' then 排名2 else 0)
      

  4.   


    ---测试
    create table tb(ID int,name varchar(2), 关键词1 varchar(10),  排名1 varchar(1), 关键词2 varchar(10)  , 排名2 varchar(1) )
    insert tb values ( 1 ,  '王','计算机','1' ,' 英语' ,'2')
    insert tb values ( 2 ,  '李','数学','5' ,' 计算机' ,'3')
    insert tb values ( 3 ,  '张','化学','3' ,' 计算机' ,'2')select ID,name from tb
    order by (case 关键词1 when '计算机' then 排名1 else 0 end)
            +(case 关键词2 when '计算机' then 排名2 else 0 end)  desc drop table tb--结果ID          name 
    ----------- ---- 
    1           王
    2           李
    3           张(所影响的行数为 3 行)