mysql按照自定義(指定順序)排序的方法實例

一、mysql中實現指定排序需求

一般情況下,我們排序都是直接利用 order by 字段 asc/desc;但是如果要排序的字段數據格式並不能直接實現,或者說我們需要指定的順序且沒有什麼規律,簡單的order by字段就實現不瞭;

如下圖中表;

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

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

二、解決方案

1:自定義排序實現

01. case when 轉換實現自定義排序;

使用case when 將字段中的中國銀行,建設銀行,工商銀行,轉換為1,2,3,這樣在我們再使用order by實現數據的自定義重排。

02:mysql排序函數filed 實現自定義排序(推薦);

MySQL中的field()函數,可以用來對SQL中查詢結果集進行指定順序排序。

field(str,str1,str2,str3…)字段str按照字符串str1,str2,str3…的順序返回查詢到的結果集。如果表中str字段值不存在於str1,str2,str3中的記錄,放在結果集最前面返回。

03:函數locate 實現自定義排序;

還可以利用locate函數來實現排序;

locate(subStr,string) :判斷字符串(string)中是否包含另一個字符串(subStr),函數返回的是subStr在string中出現的位置;

04:函數lnstr 實現自定義排序;

INSTR(STR,SUBSTR) 在一個字符串(STR)中搜索指定的字符(SUBSTR),返回發現指定的字符的位置(INDEX);

同locate函數大致一樣,不過函數內參數一個在前,一個在後;

05:利用數據字典實現自定義排序;

對於部分相對比較固定的字段,一般可以建立數據字典項來,不僅方便返回給前端做下拉等,也方便後期添加和修改的維護,也可以在數據字典中給與對應的順序;主要可以方便後期調整和維護;隻需要修改數據字典中的排序即可;

首先,需要在數據字典表中建立相應的數據字典項並維護順序;

其次,存儲時直接存儲對應的數據字典值就可以瞭,然後關聯查詢,利用數據字典順序排序;即可;

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

總結

到此這篇關於mysql按照自定義(指定順序)排序的文章就介紹到這瞭,更多相關mysql按照自定義排序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: