order by常用的使用方式我就不提了
項目的需求千變萬化
讓我們看看下面幾個怪排序需求
--先創建一個表
create table ai(
id int not null,
no varchar(10) not null
)
go
--往表中插入數據
insert into ai
select 105,'2'
union all
select 105,'1'
union all
select 103,'1'
union all
select 105,'4'
go
--查詢效果如下:
select * from ai
go
id no
----------- ----------
105 2
105 1
103 1
105 4
i.
--要求的查詢結果如下
--即要求no列的數據按'4','1','2'排列
id no
----------- ----------
105 4
105 1
103 1
105 2
--解決方案1
--利用函數CHARINDEX
select * from ai
order by charindex(no,'4,1,2')
--解決方案2,並且每組再按照id降序排列
--利用函數case
select * from ai
order by case when no='4' then 1
when no='1' then 2
when no='2' then 3
end,id desc