RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
mysql怎么自定义排序 mysql默认排序规则

21《MySQL 教程》ORDER BY 排序

前面小节介绍了如何查询数据,并且介绍了如何使用 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 可自定义排序存储方式),所以有索引的字段排序性能比没有索引的字段排序性能好。

MySql 自定义排序

str: 字段名 ,

str1,str2,str3: 自定义排序的数值

自然排序: 1,2,3,4,5 , 自定义排序: 5,3,1,4,2

先排 5,3 的数据,1,2,4的数据按照时间来

把 5,3 分 一级, 1,2,4为一级, 每级按时间排序; 也可以加一个字段实现下面的效果;

请问mysql 中 怎么实现这种排序,按照状态排序正序,再按照开始时间排序正序,

有两个思路

1、按照各自的活动状态先排序,插入到临时表,最后再union all所有结果集

create temporary table tmp1

select * from tb where 活动状态='筹备中' order by 开始时间;

create temporary table tmp2

select * from tb where 活动状态='进行中' and 开始时间 is not null order by 开始时间;

create temporary table tmp3

select * from tb where 活动状态='进行中' and 开始时间 is null;

create temporary table tmp4

select * from tb where 活动状态='已结束' order by 开始时间 desc;

(select * from tmp1)

union all

(select * from tmp2)

union all

(select * from tmp3)

union all

(select * from tmp4)

2、通过field函数自定义排序

select * from tb order by field(活动状态,'筹备中','进行中','已结束') asc,开始时间 asc;

但这种只能按指定排序,你这种多种排序,有困难。

可以看看上面两种方法结合或许有更好的方法。

sql 添加自定义排序

sql 添加自定义排序

Mysql :

SELECT (@i:=@i+1) AS ind ,字段 FROM 表名 别名, (SELECT @i:=0) t WHERE `IsDeleted` = 0;

Oracle:

本就有rownum。可直接用:SELECT rownum,字段 FROM 表名;

SqlServer:

SELECTROW_NUMBER()OVER(ORDERBYID) ROWNU,字段FROM表名;

给表中所有数据重新排序

SELECT(SELECTCOUNT(`Id`)FROM表名 别名1WHERE别名1.`IsDeleted`=0AND别名1.`Id`=别名2.`Id`)ASseq ,别名2.*FROM表名别名2WHERE别名2.`IsDeleted`=0AND别名2.`WLTId`=3;


本文名称:mysql怎么自定义排序 mysql默认排序规则
转载来于:http://lswzjz.com/article/dodiiih.html