Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4109
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-17 18:41
文章分类

全部博文(3)

文章存档

2013年(3)

我的朋友

分类: SQLServer

2013-09-22 23:10:42

 在ORDER BY中使用表达式

--drop table t_orderby

create table t_orderby

(

c1 int null,

c2 varchar(10) null,

c3 varchar(10) null

)  

 

insert into t_orderby

select 1,'2','a1' union all

select 1,'1','a2' union all

select 3,'1','ab' union all

select 1,'4','b1'

 

1. c2列的数据按'4','1','2'的指定顺序排序

 

(1) 使用union

select * from t_orderby

where c2='4'

union all

select * from t_orderby

where c2='1'

union all

select * from t_orderby

where c2='2'

 

(2) 使用表达式方法1

select * from t_orderby

order by charindex(c2,'4,1,2')

(3) 使用表达式方法2,再加个按照c1倒序

select * from t_orderby

order by case

when c2='4' then 1

when c2='1' then 2

when c2='2' then 3

end,c1 desc

 

2. 随机排序

(1) 要求c2='4'排第一行,其他的行随机排序

select * from t_orderby

order by case

when c2='4' then 1

else 1+rand()

end

(2) 所有行随机排序

 

select * from t_orderby

order by newid()

(3) 随机取出第一行

 

select top 1 * from t_orderby

order by newid()

阅读(679) | 评论(0) | 转发(0) |
0

上一篇:关于c++

下一篇:没有了

给主人留下些什么吧!~~