# 排序

__*ORDER BY 子句*__

+ 可以使用以下关键字控制排序顺序:
  + **ASC** 和 **DESC**
+ 字段名: **SELECT name FROM universe.planets ORDER BY name;**
+ 字段顺序: **SELECT name FROM universe.planets ORDER BY 1;**
+ 降序: **SELECT name FROM universe.planets ORDER BY name DESC;**
+ 多个字段组合: **SELECT name, ring_systems FROM universe.planets ORDER BY ring_systems DESC, name ASC;**
+ 如何排列 **NULL** ?

```12
SELECT name, surface_pressure FROM universe.planets ORDER BY surface_pressure ~!@ASC@!~;
SELECT name, surface_pressure FROM universe.planets ORDER BY surface_pressure ~!@DESC@!~;
```
-------------------------------------------------------------
- ORDER BY
  - OrderBy 子句用于指定结果排序顺序,可以按照列、表达式或者是 select_expr 列表中某个位置的字段进行排序。

```
tidb> SELECT name FROM universe.planets ORDER BY name;
+---------+
| name    |
+---------+
| Earth   |
| Jupiter |
| Mars    |
| Mercury |
| Neptune |
| Pluto   |
| Saturn  |
| Uranus  |
| Venus   |
+---------+
9 rows in set (0.00 sec)

tidb> SELECT name FROM universe.planets ORDER BY 1;
+---------+
| name    |
+---------+
| Earth   |
| Jupiter |
| Mars    |
| Mercury |
| Neptune |
| Pluto   |
| Saturn  |
| Uranus  |
| Venus   |
+---------+
9 rows in set (0.00 sec)

tidb> SELECT name FROM universe.planets ORDER BY name DESC;
+---------+
| name    |
+---------+
| Venus   |
| Uranus  |
| Saturn  |
| Pluto   |
| Neptune |
| Mercury |
| Mars    |
| Jupiter |
| Earth   |
+---------+
9 rows in set (0.00 sec)

tidb> SELECT name, ring_systems FROM universe.planets ORDER BY ring_systems DESC, name ASC;
+---------+--------------+
| name    | ring_systems |
+---------+--------------+
| Jupiter |            1 |
| Neptune |            1 |
| Saturn  |            1 |
| Uranus  |            1 |
| Earth   |            0 |
| Mars    |            0 |
| Mercury |            0 |
| Pluto   |            0 |
| Venus   |            0 |
+---------+--------------+
9 rows in set (0.00 sec)
```