[向晴天提问^_^]多条件排序

苦苦的潜行者 2011-12-28 05:38:44
还是那个问题

if object_id('t1') is not null
drop table t1
go
create table t1(id int,a int,b int)
insert t1
select 1, 6, 2009 union all
select 2, 2, 2008 union all
select 3, 0, 2011 union all
select 4, 3, 2011 union all
select 5, 5, 2012 union all
select 6, 4, 2013

go
drop table t1


回复已查看,多谢讲解,另外还是这个题目
(1)
select * from t1 order 1
是按照第一列排序吧?
(2)
那么select * from t1 order by case when a=5 then 1 else 0 end
这是将a=5是排到后面?难道不是当a=5时,按第一列排序?
(3)
那么select a,b from c order by case when a=5 then 1800 else b end

虽然你给我解释了,但是我现在又先入一种混乱了.如何区分这些情况,在什么时候用

还有有没有更详细的的教程...
...全文
90 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2011-12-28
  • 打赏
  • 举报
回复
參照聯機
http://technet.microsoft.com/zh-cn/library/ms181765%28SQL.90%29.aspx

教你另一方法

case when a=5 then 1800 else b end--這一段放在 select 處顯示
黄_瓜 2011-12-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 beirut 的回复:]

看了下我也会

我替他回答,分给他


1、是按照第一列排序 通常不建议这种写法,因为不直观。

2、3 都可以这样理解
SQL code
select *,newcol= case when a=5 then 1 else 0 end from t1 order by newcol
[/Quote]
我擦。。。。。。。。。都好快

撤退。。。。。。。。。
黄_瓜 2011-12-28
  • 打赏
  • 举报
回复
看了下我也会

我替他回答,分给他


1、是按照第一列排序 通常不建议这种写法,因为不直观。

2、3 都可以这样理解
select *,newcol= case when a=5 then 1 else 0 end from t1 order by newcol
快溜 2011-12-28
  • 打赏
  • 举报
回复
(1)
select * from t1 order 1
是按照第一列排序吧? 是的

区分不了就看下面的结果

select c=(case when a=5 then 1800 else b end),a,b from c order by 1
-晴天 2011-12-28
  • 打赏
  • 举报
回复
1. 以 select 列表中的第一列排序
2. 是的.没写desc,升序,0在前,1在后
3. 这个语句你少了 desc,在a=5时,取一个最小的年份,排序的时候是按
2013
2011
2011
2009
2008
1800
来排序的,把2012替换掉了.
中国风 2011-12-28
  • 打赏
  • 举报
回复
把case when 用法看一下就行了
黄_瓜 2011-12-28
  • 打赏
  • 举报
回复
坐等晴天来回答

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧