mysql按照自定義(指定順序)排序的方法實(shí)例
一、mysql中實(shí)現(xiàn)指定排序需求
一般情況下,我們排序都是直接利用 order by 字段 asc/desc;但是如果要排序的字段數(shù)據(jù)格式并不能直接實(shí)現(xiàn),或者說(shuō)我們需要指定的順序且沒(méi)有什么規(guī)律,簡(jiǎn)單的order by字段就實(shí)現(xiàn)不了;
如下圖中表;

我們需要按照中國(guó)銀行,建設(shè)銀行,工商銀行順序排序;直接使用order by 字段并不能得到我們想要的順序

同樣,對(duì)于類(lèi)型我們想要按正回購(gòu),買(mǎi)入,賣(mài)出這樣的順序去排序,簡(jiǎn)單的order by 字段也不能實(shí)現(xiàn);

二、解決方案
1:自定義排序?qū)崿F(xiàn)
01. case when 轉(zhuǎn)換實(shí)現(xiàn)自定義排序;
使用case when 將字段中的中國(guó)銀行,建設(shè)銀行,工商銀行,轉(zhuǎn)換為1,2,3,這樣在我們?cè)偈褂胦rder by實(shí)現(xiàn)數(shù)據(jù)的自定義重排。

02:mysql排序函數(shù)filed 實(shí)現(xiàn)自定義排序(推薦);
MySQL中的field()函數(shù),可以用來(lái)對(duì)SQL中查詢(xún)結(jié)果集進(jìn)行指定順序排序。
field(str,str1,str2,str3…)字段str按照字符串str1,str2,str3…的順序返回查詢(xún)到的結(jié)果集。如果表中str字段值不存在于str1,str2,str3中的記錄,放在結(jié)果集最前面返回。

03:函數(shù)locate 實(shí)現(xiàn)自定義排序;
還可以利用locate函數(shù)來(lái)實(shí)現(xiàn)排序;
locate(subStr,string) :判斷字符串(string)中是否包含另一個(gè)字符串(subStr),函數(shù)返回的是subStr在string中出現(xiàn)的位置;

04:函數(shù)lnstr 實(shí)現(xiàn)自定義排序;
INSTR(STR,SUBSTR) 在一個(gè)字符串(STR)中搜索指定的字符(SUBSTR),返回發(fā)現(xiàn)指定的字符的位置(INDEX);
同locate函數(shù)大致一樣,不過(guò)函數(shù)內(nèi)參數(shù)一個(gè)在前,一個(gè)在后;

05:利用數(shù)據(jù)字典實(shí)現(xiàn)自定義排序;
對(duì)于部分相對(duì)比較固定的字段,一般可以建立數(shù)據(jù)字典項(xiàng)來(lái),不僅方便返回給前端做下拉等,也方便后期添加和修改的維護(hù),也可以在數(shù)據(jù)字典中給與對(duì)應(yīng)的順序;主要可以方便后期調(diào)整和維護(hù);只需要修改數(shù)據(jù)字典中的排序即可;
首先,需要在數(shù)據(jù)字典表中建立相應(yīng)的數(shù)據(jù)字典項(xiàng)并維護(hù)順序;

其次,存儲(chǔ)時(shí)直接存儲(chǔ)對(duì)應(yīng)的數(shù)據(jù)字典值就可以了,然后關(guān)聯(lián)查詢(xún),利用數(shù)據(jù)字典順序排序;即可;

如果順序有變,或者要添加新的類(lèi)型,也只需要在數(shù)據(jù)字典中維護(hù)即可,不需要修改sql,擴(kuò)展性較好(有需要甚至可以給與數(shù)據(jù)字典的配置頁(yè)面專(zhuān)門(mén)維護(hù));

總結(jié)
到此這篇關(guān)于mysql按照自定義(指定順序)排序的文章就介紹到這了,更多相關(guān)mysql按照自定義排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Navicat異地自動(dòng)備份MySQL方法詳解(圖文)
Navicat異地自動(dòng)備份MySQL方法詳解,使用Navicat的需要備份mysql的朋友也方便了2012-01-01
Mysql之如何創(chuàng)建函數(shù)問(wèn)題
這篇文章主要介紹了Mysql之如何創(chuàng)建函數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
MySQL中二進(jìn)制與重做日志文件的基本概念學(xué)習(xí)教程
這篇文章主要介紹了MySQL中二進(jìn)制日志文件與重做日志文件的基本概念學(xué)習(xí)教程,講到了一些重做日志與二進(jìn)制日志的區(qū)別,需要的朋友可以參考下2015-11-11
Java連接mysql數(shù)據(jù)庫(kù)并進(jìn)行內(nèi)容查詢(xún)的方法
下面小編就為大家?guī)?lái)一篇Java連接mysql數(shù)據(jù)庫(kù)并進(jìn)行內(nèi)容查詢(xún)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10
淺談mysql的timestamp存在的時(shí)區(qū)問(wèn)題
本文主要介紹了淺談mysql的timestamp存在的時(shí)區(qū)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
MySQL配置了雙主,是如何避免出現(xiàn)數(shù)據(jù)回環(huán)沖突的
這篇文章主要介紹了MySQL配置了雙主,是如何避免出現(xiàn)數(shù)據(jù)回環(huán)沖突的,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2021-01-01
MySQL默認(rèn)值選型問(wèn)題(是空,還是?NULL)
這篇文章主要介紹了MySQL默認(rèn)值選型問(wèn)題(是空,還是?NULL),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
SQL語(yǔ)句單引號(hào)與雙引號(hào)的使用方法
這篇文章主要介紹了SQL語(yǔ)句中單引號(hào)、雙引號(hào)的使用方法,分別講述,雖然說(shuō)的是Insert語(yǔ)句,?但是Select、Update、Delete語(yǔ)句都是一樣的,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-03-03
mysql之key和index的區(qū)別及創(chuàng)建刪除索引方式
這篇文章主要介紹了mysql之key和index的區(qū)別及創(chuàng)建刪除索引方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12

