SQL系列(五)—— 排序(order by)
对查询结果进行排序是日常应用开发中最为常见的需求,在SQL中通过order by实现。order by是select语句中一部分,即子句。
1.order by
1.1 单列排序
其实,检索出的数据并不是随机显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示,这有可能是数据最初添加到表中的顺序。但是,如果数据随后进行过更新或删除,那么这个顺序将会受到DBMS重用回收存储空间的方式的影响。
子句(clause)
SQL语句由子句构成,有些子句是必需的,有些则是可选的。一个子句通常由一个关键字加上所提供的数据组成。子句的例子有我们在前一
课看到的SELECT语句的FROM子句。
为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序。
从以上可以看出:
- order by是select的子句
- 可选
- 可以作用在多个列上
注意点
ORDER BY子句的位置:
在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。如果它不是最后的子句,将会出现错误消息通过非选择列进行排序:
通常,ORDER BY子句中使用的列将是为显示而选择的列。但是,实际上并不一定要这样,用非检索的列排序数据是完全合法的
1.2多列排序
order by不仅可以作用在单列上进行排序,还可以实现对多列排序。要按多个列排序,简单指定列名,列名之间用逗号分开即可(就像选择多个列时那样)。
排序的优先级:按照order by后面紧随的列依次递减。
1.3指定排序方向
数据排序不限于升序排序(从A到Z),这只是默认的排序顺序。还可以使用ORDER BY子句进行降序(从Z到A)排序。为了进行降序排序,必须
指定DESC关键字。默认是升序。
2实践
2.1 order by简单使用
如果不排序的查询,如:
select * from student;
结果如:
| name | age |
|---|---|
| lxy | 20 |
| son | 1 |
| wly | 18 |
如果进行排序:
select * from student order by age;
结果如:
| name | age |
|---|---|
| son | 1 |
| wly | 18 |
| lxy | 20 |
根据age进行了从大到小的排序,即升序排序。
再来看下排序不检索的列:
select name from student order by age;
结果如:
| name |
|---|
| son |
| wly |
| lxy |
检索出的结果和上面的顺序保持一样。
2.2多列排序实践
select * from student;
结果如下:
| name | age |
|---|---|
| lxy | 20 |
| lxy | 10 |
| lxy | 25 |
| son | 1 |
| wly | 18 |
| wly | 16 |
如果按照name,age进行排序:
select * from student order by name, age;
结果如下:
| name | age |
|---|---|
| lxy | 10 |
| lxy | 20 |
| lxy | 25 |
| son | 1 |
| wly | 16 |
| wly | 18 |
从以上的两个结果中可以看出优先级。先对结果按照name排序,然后再对相同name的结果,按照age排序。
2.3指定排序方向
select * from student order by name;
select * from student order by name asc;
以上两条查询结果一致:
| name | age |
|---|---|
| lxy | 20 |
| lxy | 10 |
| lxy | 25 |
| son | 1 |
| wly | 18 |
| wly | 16 |
如果按照降序排序:
select * from student order by name desc;
结果如下:
| name | age |
|---|---|
| wly | 18 |
| wly | 16 |
| son | 1 |
| lxy | 20 |
| lxy | 10 |
| lxy | 25 |
参考
《SQL必知必会》
SQL系列(五)—— 排序(order by)的更多相关文章
- PL/SQL第五章 Order by排序
-- 排序 -- 1.列明排序 -- 2.别名排序 -- 3.列位置排序(当使用union,union all,intersect,minus集合操作,列明不同,但希望排序) SELECT deptn ...
- SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型
原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测 ...
- [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY
[SQL基础教程] 3-4 对查询结果进行排序/ORDER BY ORDER BY SELECT <列名1>,<列名2>,<列名2>... FROM ORDER B ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- Influx Sql系列教程五:insert 添加数据
接下来开始进入influxdb的curd篇,首先我们看一下如何添加数据,也就是insert的使用姿势 在进入本篇之前,对于不了解什么是retention policy, tag, field的同学,有 ...
- Influx Sql系列教程九:query数据查询基本篇二
前面一篇介绍了influxdb中基本的查询操作,在结尾处提到了如果我们希望对查询的结果进行分组,排序,分页时,应该怎么操作,接下来我们看一下上面几个场景的支持 在开始本文之前,建议先阅读上篇博文: 1 ...
- 不简单的SQL查询和排序语句
真不简单!! 一:使用select语句进行查询 语法: SELECT <列名> FROM <表名> [WHERE <查询条件表达式>] [OR ...
- Influx Sql系列教程八:query数据查询基本篇
前面几篇介绍了InfluxDB的添加,删除修改数据,接下来进入查询篇,掌握一定的SQL知识对于理解本篇博文有更好的帮助,下面在介绍查询的基础操作的同时,也会给出InfluxSql与SQL之间的一些差别 ...
- SQL语句分组排序,多表关联排序
SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...
随机推荐
- JIRA的安装及配置
JIRA安装 命令行打开服务:cmd:services.msc 同禅道和tapd是一样功能的. 1.安装jdk 2.安装mysql 3.安装JIRA JIRA安装密钥的查找 1.登陆管理页面: ...
- mysql主从复制几个重要的参数
1. relay_log_recovery = 1 当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上 ...
- Java数据类型(1)
基本数据类型 A.整型 byte:(8位--1个字节 有符号 以二进制补码表示) 范围:-27~27-1 即 -128~127 short:(16位--2个字节 有符号 以二进制补码表示) 范围:-2 ...
- JMETER 生成测试报告
JMETER测试报告样例 JMETER 提供的生成测试报告功能,能够生成漂亮的HTML测试报告. 上图是测试统计图 20个用户并发,测试时长一分钟,发起流程320次,没有出错,TPS为6.5,平均发起 ...
- Eclipse properties配置文件中文乱码设置
1. eclipse中properties的默认编码为 ISO-8859-1, 输入汉字会被转换为unicode 2. 点击 Windows-->preferences 按下图找到更改编码 ...
- arXiv上传文章latex源码技巧
<<2019.09.27>>更新 上传PS文件看来也是不行了,一大早收到邮件被arXiv标记为incomplete了.哎,还是老老实实提交Latex source files吧 ...
- 05-cmake语法-message()
输出错误 message(FATAL_ERROR " FATAL: In-source builds are not allowed. You should create a separat ...
- 07-numpy-笔记-join
字符串.join(字符串序列) 一目了然: #!/usr/bin/python # -*- coding: UTF-8 -*- str = "-"; seq = ("a& ...
- 用ant.design的设计注意点---表单
设计的时候,输入表单项 最好放在一起,不要散落在页面各处,会导致表单项穿插存储数据,穿插验证表单,表单的样式设计要严格按照ant的版来,因为表单是交互最多最容易出错的地方,否则浪费太多工作量 持续集成 ...
- Python3 异常
异常 --- 程序执行时产生的事件,为Python对象 <Python学习手册>笔记 异常总是通过实例对象来识别 默认的异常处理器 --- 打印标准出错信息(包括引发的异常和堆栈跟踪-异常 ...