首頁 > 軟體

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

2022-06-01 14:06:49

一、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按照自定義排序內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com