MySQL 8.4 Release Notes
5.3.4.4 排序行
在前面的示例中,您可能已经注意到结果行没有特定的顺序。通常更容易地检查查询输出,当结果行排序在某种有意义的方式时。要排序结果,请使用ORDER BY
子句。
以下是动物生日,按日期排序:
mysql> SELECT name, birth FROM pet ORDER BY birth;
+----------+------------+
| name | birth |
+----------+------------+
| Buffy | 1989-05-13 |
| Bowser | 1989-08-31 |
| Fang | 1990-08-27 |
| Fluffy | 1993-02-04 |
| Claws | 1994-03-17 |
| Slim | 1996-04-29 |
| Whistler | 1997-12-09 |
| Chirpy | 1998-09-11 |
| Puffball | 1999-03-30 |
+----------+------------+
在字符类型列上,排序—像所有其他比较操作一样—通常是无关大小写的。这意味着,相同值的列在大小写不同时顺序是未定义的。您可以强制大小写排序的列使用BINARY
,例如:ORDER BY BINARY
。col_name
默认排序顺序是升序,值最小的排在前。要在降序(降序)排序,添加DESC
关键字到要排序的列名:
mysql> SELECT name, birth FROM pet ORDER BY birth DESC;
+----------+------------+
| name | birth |
+----------+------------+
| Puffball | 1999-03-30 |
| Chirpy | 1998-09-11 |
| Whistler | 1997-12-09 |
| Slim | 1996-04-29 |
| Claws | 1994-03-17 |
| Fluffy | 1993-02-04 |
| Fang | 1990-08-27 |
| Bowser | 1989-08-31 |
| Buffy | 1989-05-13 |
+----------+------------+
您可以对多个列进行排序,并且可以对不同的列进行不同的排序方向。例如,要按动物类型升序排序,然后在同一类型中按生日降序(最年轻的动物排在前),使用以下查询:
mysql> SELECT name, species, birth FROM pet
ORDER BY species, birth DESC;
+----------+---------+------------+
| name | species | birth |
+----------+---------+------------+
| Chirpy | bird | 1998-09-11 |
| Whistler | bird | 1997-12-09 |
| Claws | cat | 1994-03-17 |
| Fluffy | cat | 1993-02-04 |
| Fang | dog | 1990-08-27 |
| Bowser | dog | 1989-08-31 |
| Buffy | dog | 1989-05-13 |
| Puffball | hamster | 1999-03-30 |
| Slim | snake | 1996-04-29 |
+----------+---------+------------+
DESC
关键字只应用于紧接着的列名(birth
);它不影响species
列排序顺序。