这篇文章将为大家详细讲解有关mysql排序的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

使用SELECT抽取数据时,数据的显示是无序的,想要得到有序的数据,那么我们就需要使用ORDER BY子句进行排序。

ORDED BY 子句语法:

SELECT <列1>,<列2>,<列3>,......

FROM <表名>

ORDER BY <排序基准1>,<排序基准2>,.....

ORDED BY 子句(商品的销售单价升序排列)

其中desc表示降序,asc表示升序排列。

示例:

这里先创建一张普通的表

CREATETABLE`test1`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`name`varchar(50)NOTNULL,`date_time`datetimeNOTNULL,`status`int(5)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=1DEFAULTCHARSET=utf8

再添加一些测试数据

INSERTINTO`test1`VALUES(NULL,'测试1','2018-03-0511:09:00',1),(NULL,'测试2','2018-03-0611:09:00',1),(NULL,'abc','2018-03-0711:09:00',1),(NULL,'def','2018-04-0811:09:00',2),(NULL,'李某某','2018-04-1711:09:00',1),(NULL,'饭某某','2018-04-2013:09:00',2),(NULL,'赵','2018-04-2001:09:00',4),(NULL,'倩','2018-04-2811:09:00',2),(NULL,'andy','2018-04-3011:09:00',1),(NULL,'tony','2018-05-0811:09:00',4),(NULL,'tom','2018-05-0711:09:00',3),(NULL,'bill','2018-05-1811:09:00',3),(NULL,'james','2018-06-0711:09:00',4),(NULL,'anthony','2018-06-1811:09:00',2),(NULL,'盖茨','2018-04-2111:09:00',1),(NULL,'部长','2018-04-2411:09:00',4),(NULL,'李总','2018-04-2011:09:00',5),(NULL,'张总','2018-04-2911:09:00',2),(NULL,'王总','2018-04-1911:09:00',3),(NULL,'唐总','2018-05-0111:09:00',2);

有了数据,开始针对这些数据,做一些排序:

1、单列排序

SELECT*FROMtest1ORDERBYdate_time

默认升序,降序后面接"DESC"即可。

2、多列排序

SELECT*FROMtest1ORDERBY`status`,date_timeDESC

首先按`status`字段排序,若`status`相等,则按data_time排序。

3、自定义排序

SELECT*FROMtest1ORDERBYFIELD(`status`,3,2,4,1,5),date_timeDESC

使用"FIELD()"函数,可指定顺序。

4、其他条件排序

先按大于等于当前时间升序,再按小于当前时间降序,支持分页。

SELECT*FROMtest1ORDERBYdate_time<NOW(),IF(date_time<NOW(),0,date_time),date_timeDESC

关于mysql排序的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。