检索出的数据并不是以纯粹的随机顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺序将会受到MySQL重用回收存储空间的影响。因此,如果不明确控制的话,不能(也不应该)依赖该排序顺序。关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有意义。

1、排序数据

SELECTprod_nameFROMproductsORDER BYprod_name;--按照prod_name将检索数据排序

View Code

这条语句除了指示MySQL对prod_name列以字母顺序排序数据的ORDER BY子句外,与前面的语句相同。

通过非选择列进行排序 通常, ORDER BY子句中使用的列将是为显示所选择的列。但是,实际上并不一定要这样,用非检索的列排序数据是完全合法的。

2、按多个列排序

经常需要按不止一个列进行数据排序。例如,如果要显示雇员清单,可能希望按姓和名排序(首先按姓排序,然后在每个姓中再按名排序)。如果多个雇员具有相同的姓,这样做很有用。

为了按多个列排序,只要指定列名,列名之间用逗号分开即可(就像选择多个列时所做的那样)。

SELECTprod_id,prod_price,prod_nameFROMproductsORDER BY prod_price,prod_name;

View Code

重要的是理解在按多个列排序时,排序完全按所规定的顺序进行。

换句话说,对于上述例子中的输出,仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果prod_price列中所有的值都是输入唯一的,则不会按prod_name排序。

3、指定排序方向

3.1 降序

数据排序不限于升序排序(从A到Z)。这只是默认的排序顺序,还可以使用ORDER BY子句以降序(从Z到A)顺序排序。为了进行降序排序,必须指定DESC关键字。

SELECTprod_id,prod_price,prod_nameFROMproductsORDER BY prod_price DESC;--此条检索记录是按价格以降序排序产品(最贵的排在最前面)

SELECTprod_id,prod_price,prod_nameFROMproductsORDER BY prod_price DESC,prod_name--DESC关键字只应用到直接位于其前面的列名。在上例中,只对prod_price列指定 DESC,对 prod_name列不指定。因此,prod_price列以降序排序,而prod_name列(在每个价格内)仍然按标准的升序排序。

View Code

DESC关键字只应用到直接位于其前面的列名。在上例中,只对prod_price列指定 DESC,对 prod_name列不指定。因此,prod_price列以降序排序,而prod_name列(在每个价格内)仍然按标准的升序排序。

在多个列上降序排序 如果想在多个列上进行降序排序, 必须对每个列指定DESC关键字。

3.2 ORDER BY 和LIMIT组合

使用ORDER BY和LIMIT的组合,能够找出一个列中最高或最低的值。下面的例子演示如何找出最昂贵物品的值:

SELECTprod_priceFROMproductsORDER BYprod_price

LIMIT1;--此条代码检索的是最贵价格的值。

prod_price DESC保证行是按照由最昂贵到最便宜检索的,而LIMIT 1告诉MySQL仅返回一行。

4、小结

ORDER BY子句的位置 在给出ORDER BY子句时,应该保证它位于FROM子句之后。如果使用LIMIT,它必须位于ORDER BY之后。使用子句的次序不对将产生错误消息。

mysql 检索结果排序方式_MySQL--排序检索数据(ORDER BY)相关推荐

  1. mysql排序优化_Mysql 排序优化

    为了优化SQL语句的排序性能,最好的情况是避免排序,合理利用索引是一个不错的方法.因为索引本身也是有序的,如果在需要排序的字段上面建立了合适的索引,那么就可以跳过排序的过程,提高SQL的查询速度.下面 ...

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

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

  3. mysql 排序速度_MySQL排序速度慢而且可能不稳定

    一.具体现象 有一个功能,按照算法得出的权重值,分页展示一批列表数据,权重值越大越靠前.研发同学反馈查询速度慢且排序不稳定. 排序不稳定的具体现象,有不少记录存在相同权重值,某条记录(假设id=100 ...

  4. 简单暴力的排序方式:直接排序

    俗话说:一方水土养一方人,不同的环境,会造成不同的结果. 比如南方人和北方人,虽然都是伟大中国的人民,但身体外形,处世态度,有着天壤之别.南方人温文而雅,北方人五大三粗. 南方人的处世态度:能吵吵的, ...

  5. mysql改存储引擎教程_MySQL中修改数据表存储引擎的三种方法

    第一种方法:ALTER TABLE 将表从一个引擎修改为另一个引擎最简单的办法是使用ALTER TABLE语句,转换表的存储引擎会导致失去原引擎相关的所有特性. 例:将mytable的引擎修改为Inn ...

  6. mysql导出数据库对象命令_mysql数据库导出数据(命令)

    MySQL数据库数据导出 一.导出命令 导出所有数据库: mysqldump -u [数据库用户名] -p -A>[备份文件的保存路径] 导出数据和数据结构: mysqldump -u [数据库 ...

  7. mysql数据排序指令_MySQL 排序 | 菜鸟教程

    MySQL 排序 我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据. 如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段 ...

  8. mysql 时间排序查询_Mysql排序查询

    /* 语法:select 查询列表 from 表 [where 筛选条件] order by 排序序列 [asc/desc] */ SELECT * FROM employees ORDER BY s ...

  9. mysql存储引擎的方式_Mysql转换表存储引擎的三种方式

    或许会有一些场景需要改变表的存储引擎,例如存储日志的表如果几乎只有insert和少量的select操作,为了追求更好的插入性能有可能会需要把存储引擎更换为MyISAM.但是,本文不建议在同一个数据库中 ...

  10. mysql自动生成id方式_Mysql全局ID生成方法

    本文给大家介绍mysql全局id生成方法,涉及到mysql全局id相关知识,感兴趣的朋友一起学习吧 生产系统随着业务增长总会经历一个业务量由小变大的过程,可扩展性是考量数据库系统高可用性的一个重要指标 ...

最新文章

  1. 【TensorFlow2.0】(7) 张量排序、填充、复制、限幅、坐标选择
  2. 使用C++ stringstream来进行数据类型转换
  3. 节流与防抖【从0到0.1】
  4. jquery.lazyload.js详解
  5. Python 之网络编程基础
  6. commons-fileupload实现文件上传下载
  7. [机器学习-总结] 什么是准确率, 精确率,召回率和(精确率和召回率的调和平均)
  8. 接口与抽象类的区别和联系
  9. 以 Ext.Net 1.2.0 为例了解网页测试工具 HttpWatch
  10. 02.XMemcached的使用
  11. HTML中的select只读
  12. nginx config的多个config配置
  13. 帮你写出更好的python代码:python函数应用进阶(一)——函数是对象
  14. 教程 | Rhino Compute Sevice介绍及环境搭建
  15. verilog语言使用注意事项
  16. 硬件电子开发常用工具
  17. Maven(Maven是干什么用)
  18. 【TJOI2017】DNA【后缀自动机】
  19. 来自清华大学开源镜像站LinuxToy的公开信~
  20. 16位深度图(depth map)伪彩色化(pseudo colorize)的代码

热门文章

  1. Unix/Linux编程:操作系统中的TCP/IP软件结构
  2. U3D学习项目一:2D横版小狐狸闯关游戏(代码部分一)
  3. Jmeter 修改背景色和字体
  4. java 邮箱 电话号码 格式效验 后端
  5. MT6761处理器介绍
  6. 【中秋系列】这款秘制Python月饼游戏,拿走不谢~
  7. 北京周末去随便走走,体察千百年古城残存的
  8. OpenCv图像处理之Mat类使用
  9. mysql查询连续天数数据
  10. 王者荣耀交流协会final发布第五次scrum例会