mysql ordery by 默认是如何进行排序的呢?

mysql ordery by 默认是如何进行排序的呢?,第1张

mysql的orderby可以排序多个。

多个排序语法:

升序:select * from table_name order by 字段1,字段2

降序:select * from table_name order by 字段1 desc,字段2 desc

下面通个一个例子介绍:有表student,表记录有,当只做age的排序的时候,年龄从大到小的排列

当做age和id排序的时候,先是年龄排序,而同年龄时段的再按id大小排 。

       

mysql的order by可以排序多个,只需在order by 后面的字段用逗号隔开即可,多个排序是有效的。

     select * from table order by fileds limit 0,1000

      如果fileds相同,就会根据*号中第二列的默认排序,比如数值型的话就是从0、1、2、3这样,字符型可能就是首字母的顺序。

如果结果都一样就按照系统默认的排序排。

如果是 innodb引擎,会根据主键大大小,由小到大;

如果是myisam引擎,就根据数据插入顺序先后来排。

例如你表名 为test,sql 如下:

       select * from test order by `order` desc-----------------根据order降序排列,去掉末尾的desc就是升序

注:order为关键字,所以字段order需要用反引号括起来,

前面小节介绍了如何查询数据,并且介绍了如何使用 WHERE 条件对查询的数据结果集进行筛选,本小节介绍如何使用 ORDER BY 对查询结果集进行排序,排序在实际业务中非常有必要,可以较好地对结果集数据分析和处理。

ASC 是对结果集按照字段从小到大排序(升序),以 teacher 表为例,将查询出来的所有结果集按照年龄 age 从小到大排序:

执行结果如下图:

DESC 是对结果集按照字段从大到小排序(降序),以 teacher 表为例,将查询出来的所有结果集按照年龄 id 从大到小排序:

执行结果如下图:

以 teacher 表为例,将查询出来的结果集按照 age 从大到小排序之后,再按照 id 字段从小到大排序:

执行结果如下图:

前面排序的 age 和 id 字段是 int 类型,为了演示方便这里先插入几个 name 字段为英文名的教师测试数据,并对 name 字段排序,插入数据 SQL 语句如下:

对查询结果集按照 name 字段 ASC 升序排序:

执行结果如下图:

本小节介绍了如何使用 ORDER BY 对查询结果集按照值字段排序,其中包括 ASC 升序和 DESC 降序,需要注意的是各种数据的字符集可能不同,如中文字符编码 GBK编码、utf-8编码, 若需要经常对字符串类型字段进行排序,可以给该字符串字段加上普通 Bree索引,二级索引树字符串默认存储方式是按照字符集升序存储的(MySQL8.0 可自定义排序存储方式),所以有索引的字段排序性能比没有索引的字段排序性能好。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7475121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存