对查询结果进行排序是日常应用开发中最为常见的需求,在SQL中通过order by实现。order by是select语句中一部分,即子句。

1.order by

1.1 单列排序

其实,检索出的数据并不是随机显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示,这有可能是数据最初添加到表中的顺序。但是,如果数据随后进行过更新或删除,那么这个顺序将会受到DBMS重用回收存储空间的方式的影响。

子句(clause)
SQL语句由子句构成,有些子句是必需的,有些则是可选的。一个子句通常由一个关键字加上所提供的数据组成。子句的例子有我们在前一
课看到的SELECT语句的FROM子句。

为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序。

从以上可以看出:

  • order by是select的子句
  • 可选
  • 可以作用在多个列上

注意点

  1. ORDER BY子句的位置:
    在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。如果它不是最后的子句,将会出现错误消息

  2. 通过非选择列进行排序:
    通常,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必知必会》

转载于:https://www.cnblogs.com/lxyit/p/9304093.html

SQL系列(五)—— 排序(order by)相关推荐

  1. PL/SQL第五章 Order by排序

    1 -- 排序 2 -- 1.列明排序 3 -- 2.别名排序 4 -- 3.列位置排序(当使用union,union all,intersect,minus集合操作,列明不同,但希望排序) 5 SE ...

  2. SQL系列五——子查询(SELECT)和组合查询(UNION)

    1.子查询: 为什么要子查询? 现有一数据表如下: 根据之前的知识我们可以查出每门科目的最高分,但是要想查出取得最高分的学生信息就做不到了.这时就需要用到子查询来取得完整的信息. 什么是子查询?子查询 ...

  3. oracle批量更新数据从另一表_常用SQL系列之(五):多表和禁止插入、批量与特殊更新等...

    本系统为@牛旦教育IT课堂在微头条上的内容, 为便于查阅,特辑录于此,都是常用SQL基本用法.. 前两篇连接: (一):SQL点滴(查询篇):数据库基础查询案例实战 (二):SQL点滴(排序篇):数据 ...

  4. mongoose 批量修改字段_常用SQL系列之(五):多表和禁止插入、批量与特殊更新等...

    本系统为@牛旦教育IT课堂在微头条上的内容, 为便于查阅,特辑录于此,都是常用SQL基本用法.. 前两篇连接: (一):SQL点滴(查询篇):数据库基础查询案例实战 (二):SQL点滴(排序篇):数据 ...

  5. sql server 索引阐述系列五 索引参数与碎片

    原文:sql server 索引阐述系列五 索引参数与碎片 -- 创建聚集索引 create table [dbo].[pub_stocktest] add constraint [pk_pub_st ...

  6. SQL语句之排序查询--ORDER BY(order by)

    SQL语句之排序查询–ORDER BY(order by) 语法 select 查询列表 from 表 (where 筛选条件) order by 排序列表 [asc:升序,desc降序] 说明:对于 ...

  7. db2 日期加减一天_常用SQL系列之(八):列值累计、占比、平均值以及日期运算等...

    本系统为@牛旦教育IT课堂在微头条上发布的内容,为便于查阅,特辑录于此,都是常用SQL基本用法. 前两篇连接: (一):SQL点滴(查询篇):数据库基础查询案例实战 (二):SQL点滴(排序篇):数据 ...

  8. greenplum 查询出来的数字加减日期_常用SQL系列之(八):列值累计、占比、平均值以及日期运算等

    本系统为@牛旦教育IT课堂在微头条上发布的内容,为便于查阅,特辑录于此,都是常用SQL基本用法. 前两篇连接: (一):SQL点滴(查询篇):数据库基础查询案例实战 (二):SQL点滴(排序篇):数据 ...

  9. db2 删除schema中所有表_常用SQL系列之(六):删除方式、数据库、表及索引元信息查询等...

    本系统为@牛旦教育IT课堂在微头条上的内容, 为便于查阅,特辑录于此,都是常用SQL基本用法.. 前两篇连接: (一):SQL点滴(查询篇):数据库基础查询案例实战 (二):SQL点滴(排序篇):数据 ...

最新文章

  1. python读取txt文件并写入excel-Python实现读取txt文件并转换为excel的方法示例
  2. 实际程序调用IndexWriter* writer = NULL
  3. nginx tomcat集群实现session共享
  4. 阿里云全球首次互联网8K直播背后的技术解读
  5. wpfdiagram 学习 教学_开启双自主学习模式 助力学生生命成长——长清湖实验学校开展“双自主合作学习”教学模式...
  6. php nsdata,iOS开发之数据存储之NSData
  7. jzoj4227-B【dp,字符串】
  8. 大师兄科研网vasp_怎样知道一名研究生有没有科研潜力?
  9. 阿里云 Ubuntu上的mysql运行sql文件来创建表
  10. 重锤痛击 robocode!
  11. [TCL]Tcl语言基礎教程(一)
  12. Winmail + Foxmail搭建企业内部邮件系统
  13. 3、一层、二层、交换机原理、Cisco软件及命令
  14. 解析12306订票流程
  15. Flutter中的Isolate的个人理解
  16. 【产品】使用 Axure 做产品原型设计
  17. win10 suse linux,Windows 10现已支持安装SUSE Linux子系统 附安装教程|蓝点网
  18. 腾讯招聘信息 爬取案例
  19. 最长递增子序列O(NlogN)算法
  20. 配置JMC远程监控linux上的java程序

热门文章

  1. java大数据开发工程师,面试题附答案
  2. aix ssh服务??
  3. python切片长度_python的间隔切片技巧
  4. 电子元器件从入门到精通pdf_电子元件入门基础,常用电子元器件详解大全作用-涨知识必读...
  5. java break与continue_java中的break与continue
  6. mysql o_Mysql数据类型
  7. ibm ilog mysql_开源纯C日志函数库iLOG3快速入门(八、如果你喜欢简单日志函数甚于日志函数库)...
  8. envi矢量图层外面有蓝色边框_蓝白渐层英短猫多少钱一只,美短银渐层大概多少钱...
  9. Java语言西安交大高起专,王树国校长在西安交通大学2018年研究生毕业典礼暨学位授予仪式上的讲话...
  10. python类的构造方法和assert的使用,用MethodType动态绑定类方法