在t-sql中订购多个列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在t-sql中订购多个列相关的知识,希望对你有一定的参考价值。

我有一个教室的桌子,有3栏:姓名,班级和年龄。什么时候

Select * from students

它显示了这些价值

Name           |   Class        |  Age   
John           |      D         |   7   
Mary           |      A         |   10  
Jenny          |      B         |   9  
Peter          |      D         |   7 

我想用这些条件对值进行排序 - 首先,按年龄排序DESC - 如果有更多2人具有相同年龄,则按名称排序ASC

我用这些命令

Select * from students order by Age Desc, Name ASC .

但它也没有对Class进行排序。有没有人可以帮助我?

答案

试试这个查询。

首先使用Asc然后再使用Desc。

Select * from students order by  Name ASC, Age Desc,
另一答案
declare @tab table(Name     varchar(30),  Class   char(1),    Age int   )

insert into @tab
select 'John'    ,    'D'  , 7  
union all 
select 'Mary'    ,    'A'  , 10  
union all
select 'Jenny'   ,    'B' , 9  
union all
select 'Peter'   ,    'D'  , 7 

select * from @tab order by Age desc,name asc

Name    Class   Age
Mary    A       10
Jenny   B       9
John    D       7
Peter   D       7
另一答案

要先按类排序,然后按年龄排序,然后命名:

Select Name, Class, Age
FROM students 
ORDER BY class ASC, Age DESC, Name ASC;

应输出:

Name           |   Class        |  Age   
Mary           |      A         |   10  
Jenny          |      B         |   9  
John           |      D         |   7 
Peter          |      D         |   7 

要按年龄排序,然后按类排序,然后命名:

Select Name, Class, Age
FROM students 
ORDER BY Age DESC, class ASC, Name ASC;

应该输出相同的,因为提供的数据恰好使用此备用条件以相同的方式排序。

Name           |   Class        |  Age   
Mary           |      A         |   10  
Jenny          |      B         |   9  
John           |      D         |   7 
Peter          |      D         |   7 

以上是关于在t-sql中订购多个列的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL 根据另一表列过滤一列上的多个值

T-SQL基于分隔符拆分列并将拆分后的字符串数组输入到多个表列中

T-SQL - 连接多个表会导致重复行

如果要在T-SQL中的多个列上中断数据,请添加Quartiles

如何在 T-SQL 中将列与旋转其他列相加

T-SQL -- 将逗号分隔的列转换为多列