SELECT * FROM aaaa ORDER BY (CASE WHEN 歌手 in('刘德华','张国荣','李春波') then 1 else 2 end)
在表中加一排序列:line, 设它所在的排序值分别为: 有刘德华的记录的为:1,张国荣的为:2,李春波的为:3然后 order by line asc 即得到你想要的结果了
SELECT * FROM aaaa order by (case when 歌首='刘德华' then 1 when 歌首='张国荣' then 2 when 歌首='李春波' then 3 else 4 end) --是这个意思吗?
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
declare @var varchar(200) set @var='刘德华,张国荣,李春波'select * from table1 order by charindex(','+name+',',','+@var+',') desc
设它所在的排序值分别为:
有刘德华的记录的为:1,张国荣的为:2,李春波的为:3然后 order by line asc
即得到你想要的结果了
order by (case when 歌首='刘德华' then 1
when 歌首='张国荣' then 2
when 歌首='李春波' then 3
else 4 end)
--是这个意思吗?
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
set @var='刘德华,张国荣,李春波'select *
from table1
order by charindex(','+name+',',','+@var+',') desc
给你一个思路建一个排序表。排序表中存放ID,歌手名字(或者歌手ID),作用是,根据这个表中的排名,决定最终的排名
然后查询的时候,通过左关联歌曲表和排序表。如果匹配了,就填写排序表的id,否则就用isnull(,足够大的数字)
最后根据地一个顺序排序,升序