SQL Order By
1. 定义
维基百科:
Order By可以根据一个或多个字段对结果集排序。
2. 前言
本小节,我们将一起学习 SQL Order By。
排序是非常常见的一个功能点,因此 SQL 提供了 Order By 来帮助开发者对结果集排序;Order By 默认按照升序排序,即ASC,
我们还可以显示指定排序为降序DESC。
本小节测试数据如下,请先在数据库中执行:
DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
  username varchar(20),
  age int
);
INSERT INTO imooc_user(username,age) VALUES('pedro',23), ('pedro',17), ('mike',18), ('jerry',28);
3. 单字段排序
Order By 多用于根据单个字段进行排序,即单字段排序。
语法如下:
SELECT [col] FROM [table_name] ORDER BY [col] [DESC|ASC];
其中table_name是数据表名,col表示字段名,[DESC|ASC]表示可以选择排序方式为降序(DESC)或升序(ASC)。
3.1 例1 升序排序 age 字段
请书写 SQL 语句,按照 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;
3.2 例2 降序排序 age 字段
请书写 SQL 语句,按照 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表示多个字段。
多字段排序会优先以第一字段排序后,再排序第二字段。
4.1 例3 升序排序 username、age 字段
请书写 SQL 语句,按照username和age字段均升序查询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;
4.2 例4 降序排序 username、升序排列 age
请书写 SQL 语句,查询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 对于字符串的排序是按位(每个字符)进行比较排序的,十分耗时,一般情况下不推荐使用。
 
          本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
