SELECT语句查询出的数据如果不进行排序,数据一般将以它在底层表中出现的顺序显示,这可以是数据最初添加到表中的顺序。但是如果数据后来进行过更新或删除,则此顺序将会受到MySQL重用回收存储空间的影响。关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定查询出的数据的顺序有意义。
可以使用ORDER BY子句对SELECT语句查询出的数据进行排序。
语法:
select <字段名列表> from <表名> order by <字段名列表> [排序方向];
- 按多个列排序时,先按照第一个字段排序,仅在多个行第一个字段值相同时才按照第二个字段进行排序。如果第一个字段值都是唯一的,则不会按照第二个字段排序。
单字段排序:查询所有员工信息按sal降序显示
mysql> select * from emp order by sal desc;
+-------+--------+------------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+------------+------+------------+------+------+--------+
| 7839 | king | persident | NULL | 1981-11-17 | 5000 | 0 | 10 |
| 7788 | scott | analyst | 7566 | 1987-04-19 | 3000 | 0 | 20 |
| 7902 | ford | analyst | 7566 | 1981-12-03 | 3000 | 0 | 20 |
| 7566 | jones | manager | 7839 | 1981-04-02 | 2975 | 0 | 20 |
| 7698 | blake | manager | 7839 | 1981-05-01 | 2850 | 0 | 30 |
| 7782 | clark | manager | 7839 | 1981-06-09 | 2450 | 0 | 10 |
| 7499 | allen | salesman | 7698 | 1981-02-20 | 1600 | 300 |