4.4.2 对多列进行排序

http://book..com 2008-06-04 16:14 马军/李玉林等编著 电子工业出版社 我要评论(0)

* 摘要:《SQL语言与数据库操作技术大全:基于SQL Server实现》第4章主要讲的是基本的查询,所谓查询就是让数据库服务器根据客户端的要求搜寻出用户所需要的信息资料,并按用户规定的格式进行整理后返回给客户端。本节为您介绍对多列进行排序。

* 标签:SQL语言 数据库 ORDER BY SQL Server SQL语言与数据库操作技术大全

*

Oracle帮您准确洞察各个物流环节

4.4.2 对多列进行排序

使用ORDER BY子句也可以根据两列或多列的结果进行排序,只要用逗号分隔开不同的排序关键字就可以了。如下面的语句:

ORDER BY col1 DESC,col2,……,colm

其实际排序结果是根据ORDER BY子句后面列名的顺序确定优先级的。即查询结果首先以列col1的降序顺序进行排序,而只有当列col1出现相同的信息时,这些相同的信息再按col2列的升序进行排序,依此类推。

实例33 对多列进行排序操作

本实例实现在BookInfo表中,查询所有的图书信息,结果按照publish列的降序和pubdate列的升序顺序排序。实现代码如下:

USE Library

SELECT *

FROM BookInfo

ORDER BY publish DESC,pubdate

运行该代码,得到的查询结果如图4.35所示。

图4.35 多列排序的查询结果

可见,系统根据排序的优先级,首先依据publish字段的记录进行降序排序(汉语拼音的首字母),当publish字段的记录相同时,再依据pubdate字段的记录进行升序排序。

另外,ORDER BY 子句除了可以根据列名进行排序外,还支持根据列的相对位置(即序号)进行排序。

如下面的语句:

SELECT col1,col2,……,coln

FROM table_name

ORDER BY 2,1

此时,ORDER BY子句后面的序号实际上就是SELECT关键词后面的列名的序号。此时ORDER BY子句就等同于ORDER BY col2,col1。

实例34 使用序号对多列进行排序操作

本实例实现在BookInfo表中,查询所有的bookid、bookname、publish、pubdate和price信息,并通过使用序号的方式对结果按照publish列的降序和pubdate列的升序顺序排序。实现代码如下:

USE Library

SELECT bookid,bookname,publish,pubdate,price

FROM BookInfo

ORDER BY 3 DESC,4

运行该代码,得到的查询结果如图4.36所示。

当ORDER BY所需要的列不在SELECT语句所选的范围内时,采用列的序号显然是行不通的。当然,可以将列别与序号混合起来解决这个问题。

图4.36 使用序号进行多列排序的查询结果

mysql 对多列进行排序 分组_Mysql 对多列进行排序相关推荐

  1. mysql 检索结果排序方式_mysql必知必会--排序检索数据

    排序数据 其实,检索出的数据并不是以纯粹的随机顺序显示的.如果不排 序,数据一般将以它在底层表中出现的顺序显示.这可以是数据最初 添加到表中的顺序.但是,如果数据后来进行过更新或删除,则此顺 序将会受 ...

  2. mysql 对多列进行排序 分组,尝试从多列全文mysql搜索中对结果进行排序

    我正在使用一个有10列的表 . 第一个是广泛的类别,接下来的9个概念随着您的上升而变得更加具体 . 所有行都有一个类别和至少1号属性,但从那里可能是空白 . 我正在尝试编写一个查询,命令关键字全文搜索 ...

  3. mysql 字母分组_MySQL按照汉字的拼音排序、按照首字母分类

    项目中有时候需要按照汉字的拼音排序,比如联系人列表.矿物分类等,有的还需要按拼音字母从A到Z分类显示. 如果存储汉字的字段编码使用的是GBK字符集,因为GBK内码编码时本身就采用了拼音排序的方法(常用 ...

  4. [转]MySQL实现over partition by(分组后对组内数据排序)

    前言 开发中遇到了这样一个需求:统计商品库存,产品ID + 子产品名称都相同时,可以确定是同一款商品.当商品来自不同的渠道时,我们要统计每个渠道中最大的那一个.如果在Oracle中可以通过分析函数 O ...

  5. mysql标识列从一开始_mysql中标识列是什么意思有什么用

    标识列是什么? 标识列又称为自增长列. 含义:可以不用手动的插入值,系统提供默认的序列值 特点: 1.标识列必须和主键搭配吗?不一定,但要求是一个key 2.一个表可以有几个标识列?至多一个! 3.标 ...

  6. oracle求一行多列最大值,Oracle分组后取某列最大值的行数据

    select * from ( select last_comment, row_number() over(partition by employeeid,roadline,stationname ...

  7. android listview排序分组,Android:如何为ListView排序数据?

    我从服务器上下载了一些 JSON数据.该数据中的一个字段是距离值.我需要按ListView中从最低到最高的距离对数据进行排序.我不知道该怎么做呢? 任何帮助赞赏. 这是我的代码,以获取数据不确定如何正 ...

  8. mysql自定义函数分组_mysql中的排序和分组及分组函数

    现实中有很多这样的需求,对全班同学成绩进行排名,将所有的学生信息按照班级来分组,先将学生按班级分组再进行成绩排名等等.今天老韩就来介绍一下如何通过数据库的排序.分组.分组排序来实现这个需求(是排序,不 ...

  9. MySQL优化篇:排序分组优化

    文章目录 1.order by关键字排序优化 1.1 无过滤不索引 1.2 顺序错,必排序 1.3 方向反,必排序 1.4 索引的选择 1.5 using filesort 1.6 使用覆盖索引 1. ...

最新文章

  1. JSON.stringify报cyclic object value错误
  2. Parent Equipment 和IBASE relationship创建时的检查逻辑
  3. 如何在不到1ms的延迟内完成100K TPS
  4. MATLAB学习笔记(十)
  5. php 动态修改文本内容_九大编程语言优缺点第八期:PHP
  6. 在win10环境中安装xilinx vivado IDE时出现的问题及解决方法
  7. CSS中背景图片的坐标之使用说明及css中把所有背景图都放在一张图片上减少图片服务器的请求次数问题(转)...
  8. 【牛腩】牛腩新闻发布系统总结
  9. java 最新Xss攻击与防护(全方位360°详解)
  10. Fences v3.0.9 中文破解版,总结了一些注意事项,亲测可用
  11. php微信昵称保存,附件十四 存储微信昵称的处理方法
  12. 苹果发布新召回计划,这款iPhone两年内免费维修
  13. android 微信分享 源码,记录Android微信分享功能的吐槽与思考
  14. 短信与社交app的好处
  15. android 项目分类汇总
  16. 数字图像处理 离散图象变换
  17. Scratch第一讲:scratch编程软件介绍
  18. 4.6 基于反熵的状态同步
  19. ubuntu配置工作环境
  20. Android取消选择单选按钮,如何取消选中Android中的单选按钮

热门文章

  1. 如何正确下载安装eclipse(java常用的编程开发软件)?
  2. python字符串操作符-python字符串操作
  3. 相关向量机(RVM)
  4. Vigenere密码加密解密原理
  5. html查看器更改默认打开方式,初学者如何设置默认打开方式
  6. python 制作二维码
  7. Virustotal的使用
  8. 如何正确的对安卓手机进行数据恢复?
  9. Oracle SQL 单引号与双引号区别
  10. networkx —— 基本操作及画图