国开《数据库基础与应用》第四章 4-5-4:ORDER BY选项
4-5-4:ORDER BY选项
ORDER BY选项的语法格式如下:
ORDER BY <排序列名1> [ASC | DESC] [, <排序列名2> [ASC | DESC]…]
ORDER BY是此选项的关键字,此选项中的 <排序列名1> , <排序列名2> 等是需要使查询结果按其进行排序的列。它们可以是源表中的列名,也可以是SELECT选项中所给表达式的顺序号,即对应查询结果中的列号,或者是在所给表达式和as后面定义的列名。对于每个排序列,还可以指定排序方式,ASC将按值的升序排列,DESC将按值的降序排列。
例4:从教学库中查询出所有学生的学号及所选课程的门数,并按门数降序排列查询结果。
分析:此查询只需要在一个单独的选课表上就可以完成。在查询语句中,为了查询出每个学生的选课门数,需要使用按学生号分组统计的group by选项,并且需要在select选项中使用按学生号进行分组统计的count列函数,假定对该列命名为“选课门数”;为了使查询结果按门数降序排列,则需要使用进行结果排序的order by选项。
select 学生号,count(学生号) as 选课门数
from 选课
group by 学生号
order by 选课门数 desc
在该查询语句最后的order by选项中,可以把“选课门数”列名用数字2来代替,因为选课门数列在查询结果中为第2列数据。
学生号 | 选课门数 |
---|---|
0202003 | 4 |
0101001 | 2 |
0102005 | 1 |
0303001 | 1 |
例5:从教学库中查询出每个学生的记录信息,以及所选课程的门数,并按门数降序排列查询结果。
分析:在此例中需要涉及到学生表和选课表的等值连接。为了显示出每个学生的所有列的信息,学生表中的学生号、姓名、性别、专业等4个列名都必须使用在进行分组统计的group by选项中。
select 学生.学生号,姓名,性别,专业,count(*) as 选课门数
from 学生,选课
where 学生.学生号=选课.学生号
group by 学生.学生号,姓名,性别,专业
order by 5 desc
可以在order by关键字后直接写上数字5。
学生号 | 姓名 | 性别 | 专业 | 选课门数 |
---|---|---|---|---|
0202003 | 张鲁 | 男 | 电子 | 4 |
0101001 | 王明 | 男 | 计算机 | 2 |
0102005 | 刘芹 | 女 | 电子 | 1 |
0303001 | 赵红 | 女 | 机械 | 1 |