SELECT查询结果排序

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 1.排序数据使用SELECT 的order by子句可以对查询结果进行排序。 确保ORDER BY子句在SELECT语句的最后,否则会出现错误。

1.排序数据

使用SELECT 的order by子句可以对查询结果进行排序。

确保ORDER BY子句在SELECT语句的最后,否则会出现错误。

示例:

查询产品名称并以字母顺序排序:

mysql> SELECT prod_name from Products ORDER BY prod_name;  
+---------------------+
| prod_name           |
+---------------------+
| 12 inch teddy bear  |
| 18 inch teddy bear  |
| 8 inch teddy bear   |
| Bird bean bag toy   |
| Fish bean bag toy   |
| King doll           |
| Queen doll          |
| Rabbit bean bag toy |
| Raggedy Ann         |
+---------------------+
9 rows in set (0.00 sec)

以价格升序排序:

mysql> SELECT prod_name,prod_price from Products ORDER BY prod_price;  
+---------------------+------------+
| prod_name           | prod_price |
+---------------------+------------+
| Fish bean bag toy   |       3.49 |
| Bird bean bag toy   |       3.49 |
| Rabbit bean bag toy |       3.49 |
| Raggedy Ann         |       4.99 |
| 8 inch teddy bear   |       5.99 |
| 12 inch teddy bear  |       8.99 |
| King doll           |       9.49 |
| Queen doll          |       9.49 |
| 18 inch teddy bear  |      11.99 |
+---------------------+------------+
9 rows in set (0.00 sec)

价格降序排序:

mysql> SELECT prod_name,prod_price FROM  Products ORDER BY prod_price DESC;  
+---------------------+------------+
| prod_name           | prod_price |
+---------------------+------------+
| 18 inch teddy bear  |      11.99 |
| King doll           |       9.49 |
| Queen doll          |       9.49 |
| 12 inch teddy bear  |       8.99 |
| 8 inch teddy bear   |       5.99 |
| Raggedy Ann         |       4.99 |
| Fish bean bag toy   |       3.49 |
| Bird bean bag toy   |       3.49 |
| Rabbit bean bag toy |       3.49 |
+---------------------+------------+
9 rows in set (0.00 sec)

2.按多个列排序

按多个列排序的时候,先按第一列排序,第一列中有相同值,相同值的记录再按第二列排序;如果第一列都是唯一的,则不再按第二列排序。如下示例:

mysql> SELECT prod_id,prod_price,prod_name FROM  Products ORDER BY prod_price,prod_name;  
+---------+------------+---------------------+
| prod_id | prod_price | prod_name           |
+---------+------------+---------------------+
| BNBG02  |       3.49 | Bird bean bag toy   |
| BNBG01  |       3.49 | Fish bean bag toy   |
| BNBG03  |       3.49 | Rabbit bean bag toy |
| RGAN01  |       4.99 | Raggedy Ann         |
| BR01    |       5.99 | 8 inch teddy bear   |
| BR02    |       8.99 | 12 inch teddy bear  |
| RYL01   |       9.49 | King doll           |
| RYL02   |       9.49 | Queen doll          |
| BR03    |      11.99 | 18 inch teddy bear  |
+---------+------------+---------------------+
9 rows in set (0.00 sec)

上面查询先依据价格排序,价格相同的按prod_name字典顺序排序。
也可以使用位置代替排序列名,上述sql语句还可以这样写:

mysql> SELECT prod_id,prod_price,prod_name FROM  Products ORDER BY 2,3;  

使用位置代表列名,优点是不用重新输入列名,缺点是列名更改时会造成错误。

升序和降序

ORDER BY查询默认是升序排序,降序可以加上DESC,比如按价格由高到低排序:

mysql> SELECT prod_id,prod_price,prod_name FROM  Products ORDER BY prod_price DESC,prod_name;  
+---------+------------+---------------------+
| prod_id | prod_price | prod_name           |
+---------+------------+---------------------+
| BR03    |      11.99 | 18 inch teddy bear  |
| RYL01   |       9.49 | King doll           |
| RYL02   |       9.49 | Queen doll          |
| BR02    |       8.99 | 12 inch teddy bear  |
| BR01    |       5.99 | 8 inch teddy bear   |
| RGAN01  |       4.99 | Raggedy Ann         |
| BNBG02  |       3.49 | Bird bean bag toy   |
| BNBG01  |       3.49 | Fish bean bag toy   |
| BNBG03  |       3.49 | Rabbit bean bag toy |
+---------+------------+---------------------+
9 rows in set (0.00 sec)

DESC只对在它前面的一个列名有作用,mysql> SELECT prod_id,prod_price,prod_name FROM Products ORDER BY prod_price,prod_name DESC;对prod_price无效:

mysql> SELECT prod_id,prod_price,prod_name FROM  Products ORDER BY prod_price,prod_name DESC;  
+---------+------------+---------------------+
| prod_id | prod_price | prod_name           |
+---------+------------+---------------------+
| BNBG03  |       3.49 | Rabbit bean bag toy |
| BNBG01  |       3.49 | Fish bean bag toy   |
| BNBG02  |       3.49 | Bird bean bag toy   |
| RGAN01  |       4.99 | Raggedy Ann         |
| BR01    |       5.99 | 8 inch teddy bear   |
| BR02    |       8.99 | 12 inch teddy bear  |
| RYL02   |       9.49 | Queen doll          |
| RYL01   |       9.49 | King doll           |
| BR03    |      11.99 | 18 inch teddy bear  |
+---------+------------+---------------------+
9 rows in set (0.00 sec)
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库——SQL(3)-DQL(基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询、案例练习)
MySQL数据库——SQL(3)-DQL(基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询、案例练习)
64 0
|
7月前
|
SQL
SQL语句两个字段或多个字段同时order by 排序
SQL语句两个字段或多个字段同时order by 排序
1121 0
|
7月前
|
SQL 数据库管理
sqlite语句order by两个字段同时排序处理
sqlite语句order by两个字段同时排序处理
73 0
|
SQL
解决union查询order by 排序失效的问题
解决union查询order by 排序失效的问题
237 0
数据查询语句:包括SELECT语句、WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句等,用于从数据表中检索数据。
数据查询语句:包括SELECT语句、WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句等,用于从数据表中检索数据。
57 1
|
SQL
ORDER BY:对查询结果进行排序
ORDER BY:对查询结果进行排序
111 0
|
存储 SQL 缓存
SQL优化实战-0002:select查询不建议使用星号(select *),最好指定具体查询字段
SQL优化实战-0002:select查询不建议使用星号(select *),最好指定具体查询字段
313 0
|
SQL 数据库
对查询结果进行排序
对查询结果进行排序
98 0
Select 查询数据语句
Select 查询数据语句
189 0
|
SQL C++ Python
SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)
掌握了这些,就比较高级啦 Using the Same Table Twice 如下面查询中的branch字段 SELECT a.account_id, e.emp_id, b_a.name open_branch, b_e.
4662 0
下一篇
DataWorks