您的位置:首页技术文章
文章详情页

sql server中order by部分使用方式

【字号: 日期:2023-11-01 19:19:11浏览:3作者:猪猪

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

--解决方案3 --利用UNION 运算符 select * from ai where no='4' union all select * from ai where no='1' union all select * from ai where no='2'

ii. --查询要求指定no='4'排第一行,其他的行随机排序 id; no ----------- ---------- 105 4 105 2 105 1 103 1

--解决方案 select * from ai order by case when no='4' then 1 else 1+rand() end

iii. --查询要求所有行随机排序

--解决方案 select * from ai order by newid()

iiii --有一表ab有列i,其中数据如下: i varchar(10) a1 a10 a101 a5 p4 p41 p5

--现在要求列i中数据先按字母排序,再按数字排序 --效果如下: a1 a5 a10 a101 p4 p5 p41

--解决方案 select * from ab order by left(i,1),convert(int,substring(i,2,8000))

标签: Sql Server 数据库