order by子句
SQL查询 列出在`Physics`系的所有教师
desc降序 asc升序
在多个属性上排序
SQL查询 先按salary降序 若salary相同 则按姓名升序
3.4.4 排列元组的显示次序
order by子句
SQL
为用户提供了一些对关系中元组显示次序的控制。 order by
子句就可以让查询结果中元组按排列顺序显示。
SQL查询 列出在Physics
系的所有教师
为了按字母顺序
列出在Physics
系的所有教师,我们可以这样写:1
2
3
4select name
from instructor
where dept_name = 'Physics'
order by name;1
2
3
4
5
6
7
8
9
10
11mysql> 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
3select *
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
20mysql> 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