在t-sql中订购多个列

时间:2018-03-01 04:24:54

标签: sql-server tsql stored-procedures

我有一个教室的桌子,有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进行排序。有没有人可以帮助我?

3 个答案:

答案 0 :(得分:0)

尝试此查询。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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