您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL Order By

1. 定义

维基百科:Order By可以根据或多个字段对结果集排序。

2. 前言

本小节,我们将一起学习 Order By

排序是非常常见的点,因此 提供了 Order By 来帮助开发者对结果集排序;Order By 认按照升序排序,即ASC
我们还可以指定排序为降序DESC

本小节测试数据如下,请先在中执行:

DROP TABLE IF EXISTS imooc_user;CREATE TABLE imooc_user(
  username varchar(),
  age int);INSERT INTO imooc_user(username,age) VALUES('pedro',), ('pedro',), ('mike',), ('jerry',);

3. 单字段排序

Order By 多用于根据单个字段进行排序,即单字段排序。

语法如下:

SELECT [col] FROM [table_name] ORDER BY [col] [DESC|ASC];

其中table_name是数据表名,col表示字段名,[DESC|ASC]表示可以选择排序方式为降序(DESC)升序(ASC)

请书写 语句,按照 age 字段升序imooc_user表。

分析:

按照排序语法写出语句即可。

语句:

SELECT username,age FROM imooc_user ORDER BY age;

结果如下:

+----------+-----+
| username | age |
+----------+-----+
| mike     | 18  |
| pedro    | 23  |
| jerry    | 28  |
+----------+-----+

当然也可以指定排序方式:

SELECT username,age FROM imooc_user ORDER BY age ASC;

请书写 语句,按照 age 字段降序imooc_user表。

分析:

同上,只需改变排序方式为降序即可

语句

SELECT username,age FROM imooc_user ORDER BY age DESC;

结果如下:

+----------+-----+
| username | age |
+----------+-----+
| jerry    | 28  |
| pedro    | 23  |
| mike     | 18  |
+----------+-----+

4. 多字段排序

Order By 还可用于多字段排序。

语法如下:

SELECT [col] FROM [table_name] ORDER BY [col1] [DESC|ASC],[col2] [DESC|ASC];

其中table_name是数据表名,col表示字段名,[DESC|ASC]表示可以选择排序方式为降序(DESC)升序(ASC),数字1、2表示多个字段。

多字段排序会优先以第一字段排序后,再排序第二字段。

请书写 语句,按照usernameage字段均升序imooc_user数据,。

分析:

只需将 Order By 后的单字段改为双字段,且用,分割即可。

语句:

SELECT username,age FROM imooc_user ORDER BY username, age;

结果如下:

+----------+-----+
| username | age |
+----------+-----+
| jerry    | 28  |
| mike     | 18  |
| pedro    | 23  |
+----------+-----+

上面的语句中省略了排序方式,我们可以指定排序方式:

SELECT username,age FROM imooc_user ORDER BY username ASC, age ASC;

请书写 语句,imooc_user数据,返回username降序age升序的结果。

分析:

同上,改变 username 的排序即可。

语句

SELECT username,age FROM imooc_user ORDER BY username DESC, age ASC;

结果如下:

+----------+-----+
| username | age |
+----------+-----+
| pedro    | 23  |
| mike     | 18  |
| jerry    | 28  |
+----------+-----+

5. 小结

Order By 可以有效让结果有序,这对于数据展示来说至关重要。

Order By 对于多字段的排序虽然强大,但是很消耗。

Order By 对于字符串的排序是按位(每个字符)进行比较排序的,十分耗时,一般情况下不推荐使用。


联系我
置顶