mysql 检索结果排序方式_MySQL--排序检索数据(ORDER BY)
检索出的数据并不是以纯粹的随机顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺序将会受到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)相关推荐
- mysql排序优化_Mysql 排序优化
为了优化SQL语句的排序性能,最好的情况是避免排序,合理利用索引是一个不错的方法.因为索引本身也是有序的,如果在需要排序的字段上面建立了合适的索引,那么就可以跳过排序的过程,提高SQL的查询速度.下面 ...
- mysql 检索结果排序方式_mysql必知必会--排序检索数据
排序数据 其实,检索出的数据并不是以纯粹的随机顺序显示的.如果不排 序,数据一般将以它在底层表中出现的顺序显示.这可以是数据最初 添加到表中的顺序.但是,如果数据后来进行过更新或删除,则此顺 序将会受 ...
- mysql 排序速度_MySQL排序速度慢而且可能不稳定
一.具体现象 有一个功能,按照算法得出的权重值,分页展示一批列表数据,权重值越大越靠前.研发同学反馈查询速度慢且排序不稳定. 排序不稳定的具体现象,有不少记录存在相同权重值,某条记录(假设id=100 ...
- 简单暴力的排序方式:直接排序
俗话说:一方水土养一方人,不同的环境,会造成不同的结果. 比如南方人和北方人,虽然都是伟大中国的人民,但身体外形,处世态度,有着天壤之别.南方人温文而雅,北方人五大三粗. 南方人的处世态度:能吵吵的, ...
- mysql改存储引擎教程_MySQL中修改数据表存储引擎的三种方法
第一种方法:ALTER TABLE 将表从一个引擎修改为另一个引擎最简单的办法是使用ALTER TABLE语句,转换表的存储引擎会导致失去原引擎相关的所有特性. 例:将mytable的引擎修改为Inn ...
- mysql导出数据库对象命令_mysql数据库导出数据(命令)
MySQL数据库数据导出 一.导出命令 导出所有数据库: mysqldump -u [数据库用户名] -p -A>[备份文件的保存路径] 导出数据和数据结构: mysqldump -u [数据库 ...
- mysql数据排序指令_MySQL 排序 | 菜鸟教程
MySQL 排序 我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据. 如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段 ...
- mysql 时间排序查询_Mysql排序查询
/* 语法:select 查询列表 from 表 [where 筛选条件] order by 排序序列 [asc/desc] */ SELECT * FROM employees ORDER BY s ...
- mysql存储引擎的方式_Mysql转换表存储引擎的三种方式
或许会有一些场景需要改变表的存储引擎,例如存储日志的表如果几乎只有insert和少量的select操作,为了追求更好的插入性能有可能会需要把存储引擎更换为MyISAM.但是,本文不建议在同一个数据库中 ...
- mysql自动生成id方式_Mysql全局ID生成方法
本文给大家介绍mysql全局id生成方法,涉及到mysql全局id相关知识,感兴趣的朋友一起学习吧 生产系统随着业务增长总会经历一个业务量由小变大的过程,可扩展性是考量数据库系统高可用性的一个重要指标 ...
最新文章
- 【TensorFlow2.0】(7) 张量排序、填充、复制、限幅、坐标选择
- 使用C++ stringstream来进行数据类型转换
- 节流与防抖【从0到0.1】
- jquery.lazyload.js详解
- Python 之网络编程基础
- commons-fileupload实现文件上传下载
- [机器学习-总结] 什么是准确率, 精确率,召回率和(精确率和召回率的调和平均)
- 接口与抽象类的区别和联系
- 以 Ext.Net 1.2.0 为例了解网页测试工具 HttpWatch
- 02.XMemcached的使用
- HTML中的select只读
- nginx config的多个config配置
- 帮你写出更好的python代码:python函数应用进阶(一)——函数是对象
- 教程 | Rhino Compute Sevice介绍及环境搭建
- verilog语言使用注意事项
- 硬件电子开发常用工具
- Maven(Maven是干什么用)
- 【TJOI2017】DNA【后缀自动机】
- 来自清华大学开源镜像站LinuxToy的公开信~
- 16位深度图(depth map)伪彩色化(pseudo colorize)的代码