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!
推薦閱讀:
- MySQL 十大常用字符串函數詳解
- MySQL實現字符串的拼接,截取,替換,查找位置的操作
- postgresql 中position函數的性能詳解
- MySQL如何從不固定位置提取字符串元素詳解
- 詳細聊聊關於sql註入的一些零散知識點