首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

[向晴天提问^]多条件排序,该怎么解决

2012-04-07 
[向晴天提问^_^]多条件排序还是那个问题SQL codeif object_id(t1) is not nulldrop table t1gocreate ta

[向晴天提问^_^]多条件排序
还是那个问题

SQL code
if object_id('t1') is not nulldrop table t1gocreate table t1(id int,a int,b int)insert t1select 1, 6, 2009 union allselect 2, 2, 2008 union allselect 3, 0, 2011 union allselect 4, 3, 2011 union allselect 5, 5, 2012 union allselect 6, 4, 2013godrop 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

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

还有有没有更详细的的教程...


[解决办法]
坐等晴天来回答
[解决办法]
把case when 用法看一下就行了
[解决办法]
1. 以 select 列表中的第一列排序
2. 是的.没写desc,升序,0在前,1在后
3. 这个语句你少了 desc,在a=5时,取一个最小的年份,排序的时候是按
2013
2011
2011
2009
2008
1800
来排序的,把2012替换掉了.
[解决办法]
(1)
select * from t1 order 1
是按照第一列排序吧? 是的

区分不了就看下面的结果

select c=(case when a=5 then 1800 else b end),a,b from c order by 1

[解决办法]
看了下我也会

我替他回答,分给他


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

2、3 都可以这样理解
SQL code
select *,newcol= case when a=5 then 1 else 0 end from t1 order by newcol
[解决办法]
探讨

看了下我也会

我替他回答,分给他


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

2、3 都可以这样理解
SQL code
select *,newcol= case when a=5 then 1 else 0 end from t1 order by newcol

[解决办法]
參照聯機
http://technet.microsoft.com/zh-cn/library/ms181765%28SQL.90%29.aspx

教你另一方法

case when a=5 then 1800 else b end--這一段放在 select 處顯示

热点排行