当前位置:文档之家› sql server中order by部分如何使用

sql server中order by部分如何使用

sql server中order by部分如何使用?

此文章出自达思SQL数据恢复软件

让我们看看下面几个怪排序需求

--先创建一个表

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数据库修复软件https://www.doczj.com/doc/e514306457.html,/soft/110811.htm https://www.doczj.com/doc/e514306457.html,/download/64222.html

达思数据恢复软件https://www.doczj.com/doc/e514306457.html,/soft/106433.htm

https://www.doczj.com/doc/e514306457.html,/soft/59092.html

https://www.doczj.com/doc/e514306457.html,/soft/28411.html

官网:https://www.doczj.com/doc/e514306457.html,/index.html

相关主题
文本预览
相关文档 最新文档