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

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

同樣,對于類型我們想要按正回購,買入,賣出這樣的順序去排序,簡單的order by 字段也不能實現(xiàn);

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

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

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

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

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

其次,存儲時直接存儲對應的數(shù)據(jù)字典值就可以了,然后關聯(lián)查詢,利用數(shù)據(jù)字典順序排序;即可;

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

總結
到此這篇關于mysql按照自定義(指定順序)排序的文章就介紹到這了,更多相關mysql按照自定義排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL創(chuàng)建數(shù)據(jù)庫的兩種方法
這篇文章主要為大家詳細介紹了MySQL創(chuàng)建數(shù)據(jù)庫的兩種方法,感興趣的小伙伴們可以參考一下2016-05-05
mysql數(shù)據(jù)庫優(yōu)化必會的幾個參數(shù)中文解釋
對于自己配置mysql數(shù)據(jù)庫的朋友,需要注意的幾點,下面都是英文的解釋,比較易懂方便和我一樣需要優(yōu)化配置mysql的朋友2008-09-09
MySQL?Community?Server?8.0.29安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了MySQL?Community?Server?8.0.29安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06
mysql5.6及以下版本如何查詢數(shù)據(jù)庫里的json
MySQL里面保存數(shù)據(jù)有時候會把一些雜亂且不常用的時候丟進一個json字段里面,那么如何查詢數(shù)據(jù)庫里的json呢以及mysql存儲json注意那些格式呢?接下來通過本文給大家詳細介紹,需要的朋友參考下2017-03-03

