加入收藏 | 设为首页 | 会员中心 | 我要投稿 草根网_南昌站长网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MySql > 正文

MySQL中如何实现自定义排序

发布时间:2022-09-17 15:02:56 所属栏目:MySql 来源:
导读:  在MySQL中我们知道排序的语法是order by,order by 后面紧跟着的就是排序的字段,ase、desc分别表示升序、降序,现在遇到的情景是还是要进行排序,并且假设字段A分别有a、b、c、d、e、f等几个值,如果简单的对字
  在MySQL中我们知道排序的语法是order by,order by 后面紧跟着的就是排序的字段,ase、desc分别表示升序、降序,现在遇到的情景是还是要进行排序,并且假设字段A分别有a、b、c、d、e、f等几个值,如果简单的对字段A进行升序排序,那结果自然就是a-f,如果按降序排序,那结果就是f-a,问题是如果我们想要的排序结果是b、c、d、a、e、f,显然,这样的序列既不是升序,也不是降序,即我们要指定一个序列,让字段A按我们指定的序列进行排序,该如何实现呢?
 
  假设现在的需求是courses字段按SQL入门、Java中级、UNIX基础这样的顺序进行排列,有两种方法。
 
  方法一:使用MySQL中的自定义排序函数—field。此函数的格式是field(vaule,str1,str2,str3……),value就是用于排序的字段,str1、str2、str3就是序列。回到示例中,答案就出来了:
 
  “Select * from courses order by field(course,’SQL入门’,’Java中级’,’UNIX基础’)”。
 
  field函数是在MySQL数据库中使用的,如果数据库不支持此函数mysql排序,就得想其他办法来达到排序效果,这个时候case when就派上用场了。使用case when对courses中的每一个值打标,打标后再排序,即令SQL入门等于1、Java中级等于2、UNIX基础等于3,然后进行升序排序,结果如下:
 
  以上就是在MySQL中实现自定义排序的两种方法,分别是使用field函数和case when方法,两种方法各有优劣,field函数是有固定样式,仅能对一个字段进行排序,case when相对复杂一些,但比较灵活,假设我们的需求是先对name字段排序,再按courses排序,那这种情况就只能使用case when方法。
 

(编辑:草根网_南昌站长网 )

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章