SELECT * FROM aaaa
 order by case 歌首 when '刘德华' then 1 when '张国荣' then 2 when '李春波' then 3 else 4 end

解决方案 »

  1.   

    SELECT * FROM aaaa ORDER BY (CASE WHEN 歌手 in('刘德华','张国荣','李春波') then 1 else 2 end)
      

  2.   

    在表中加一排序列:line,
    设它所在的排序值分别为:
    有刘德华的记录的为:1,张国荣的为:2,李春波的为:3然后 order by line asc
    即得到你想要的结果了
      

  3.   

    SELECT * FROM aaaa
    order by (case when  歌首='刘德华' then 1
     when 歌首='张国荣' then 2
     when 歌首='李春波' then 3
     else 4 end)
    --是这个意思吗?
      

  4.   

    select * from @t 
    order by   
    charindex(','+name+',',',刘德华,李春波,张国荣,') desc
    --或者
    select * from @t 
    order by  case when name='刘德华' then 1 
                   when name='李春波' then 2 
           when name='张国荣' then 3  end desc
      

  5.   

    declare @var varchar(200)
    set @var='刘德华,张国荣,李春波'select * 
    from table1
    order by charindex(','+name+',',','+@var+',') desc
      

  6.   

    不想写代码
    给你一个思路建一个排序表。排序表中存放ID,歌手名字(或者歌手ID),作用是,根据这个表中的排名,决定最终的排名
    然后查询的时候,通过左关联歌曲表和排序表。如果匹配了,就填写排序表的id,否则就用isnull(,足够大的数字)
    最后根据地一个顺序排序,升序
      

  7.   

    万分感谢大家提供的技术支持,我想问一下上面的代码,如果aaaa表中这三个歌手,或者二个,或者一个歌首不存在的话,还能有结果吗?