欢迎光临
我们一直在努力

sql server中order by部分使用方式_数据库技巧

建站超值云服务器,限时71元/月

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))

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » sql server中order by部分使用方式_数据库技巧
分享到: 更多 (0)