3.4.4 排列元组的显示次序

3.4.4 排列元组的显示次序

order by子句

SQL为用户提供了一些对关系中元组显示次序的控制。 order by子句就可以让查询结果中元组按排列顺序显示。

SQL查询 列出在Physics系的所有教师

为了按字母顺序列出在Physics系的所有教师,我们可以这样写:

1
2
3
4
select name
from instructor
where dept_name = 'Physics'
order by name;
1
2
3
4
5
6
7
8
9
10
11
mysql> select name
from instructor
where dept_name = 'Physics'
order by name;
+----------+
| name |
+----------+
| Einstein |
| Gold |
+----------+
2 rows in set

desc降序 asc升序

order by子句默认使用升序。要说明排序顺序,我们可以用desc表示降序,或者用asc表示升序。

在多个属性上排序

此外,排序可在多个属性上进行。

SQL查询 先按salary降序 若salary相同 则按姓名升序

假设我们希望按salary的降序列出整个instructor关系。如果有几位教师的工资相同,就将它们按姓名升序排列。我们用SQL将该查询表示如下:

1
2
3
select *
from instructor
order by salary desc, name asc;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> select *
from instructor
order by salary desc, name asc;
+-------+------------+------------+--------+
| ID | name | dept_name | salary |
+-------+------------+------------+--------+
| 22222 | Einstein | Physics | 95000 |
| 83821 | Brandt | Comp. Sci. | 92000 |
| 12121 | Wu | Finance | 90000 |
| 33456 | Gold | Physics | 87000 |
| 98345 | Kim | Elec. Eng. | 80000 |
| 76543 | Singh | Finance | 80000 |
| 45565 | Katz | Comp. Sci. | 75000 |
| 76766 | Crick | Biology | 72000 |
| 10101 | Srinivasan | Comp. Sci. | 65000 |
| 58583 | Califieri | History | 62000 |
| 32343 | El Said | History | 60000 |
| 15151 | Mozart | Music | 40000 |
+-------+------------+------------+--------+
12 rows in set