2016-07-28 83 views
-2

我知道MySQL支持通過desc或asc排序數據,但使用默認排序規則不能滿足我的要求。按自定義規則排序MySQL數據

任何人都可以有想法,在MySQL像下面的數據進行排序:

| agr_offer_inst     | 
| agr_offer_inst_22_00   | 
| agr_offer_inst_22_00_err  | 
| agr_offer_inst_22_01   | 
| agr_offer_inst_22_01_err  | 
| agr_offer_inst_22_02   | 
| agr_offer_inst_22_02_err  | 
| agr_offer_inst_22_03   | 
| agr_offer_inst_22_03_err  | 
| agr_offer_inst_22_04   | 
| agr_offer_inst_22_04_err  | 
| agr_offer_inst_22_05   | 
| agr_offer_inst_22_05_err  | 
| agr_offer_inst_22_06   | 
| agr_offer_inst_22_06_err  | 
| agr_offer_inst_22_07   | 
| agr_offer_inst_22_07_err  | 
| agr_offer_inst_22_08   | 
| agr_offer_inst_22_08_err  | 
| agr_offer_inst_22_09   | 
| agr_offer_inst_22_09_err  | 
| agr_offer_inst_err    | 
| agr_offer_inst_h    | 
| agr_offer_inst_h_22_00   | 
| agr_offer_inst_h_22_01   | 
| agr_offer_inst_h_22_02   | 
| agr_offer_inst_h_22_03   | 
| agr_offer_inst_h_22_04   | 
| agr_offer_inst_h_22_05   | 
| agr_offer_inst_h_22_06   | 
| agr_offer_inst_h_22_07   | 
| agr_offer_inst_h_22_08   | 
| agr_offer_inst_h_22_09   | 

以下是我需要的結果:

| agr_offer_inst     | 
| agr_offer_inst_22_00   | 
| agr_offer_inst_22_01   | 
| agr_offer_inst_22_02   | 
| agr_offer_inst_22_03   | 
| agr_offer_inst_22_04   | 
| agr_offer_inst_22_05   | 
| agr_offer_inst_22_06   | 
| agr_offer_inst_22_07   | 
| agr_offer_inst_22_08   | 
| agr_offer_inst_22_09   | 
| agr_offer_inst_err    | 
| agr_offer_inst_22_00_err  | 
| agr_offer_inst_22_01_err  | 
| agr_offer_inst_22_02_err  | 
| agr_offer_inst_22_03_err  | 
| agr_offer_inst_22_04_err  | 
| agr_offer_inst_22_05_err  | 
| agr_offer_inst_22_06_err  | 
| agr_offer_inst_22_07_err  | 
| agr_offer_inst_22_08_err  | 
| agr_offer_inst_22_09_err  | 
| agr_offer_inst_h    | 
| agr_offer_inst_h_22_00   | 
| agr_offer_inst_h_22_01   | 
| agr_offer_inst_h_22_02   | 
| agr_offer_inst_h_22_03   | 
| agr_offer_inst_h_22_04   | 
| agr_offer_inst_h_22_05   | 
| agr_offer_inst_h_22_06   | 
| agr_offer_inst_h_22_07   | 
| agr_offer_inst_h_22_08   | 
| agr_offer_inst_h_22_09   | 

我已經嘗試了很多次,但都沒有結果。

回答

1

order by可以採取多個鍵。所以,這裏有一個方法:

order by (case when col like '%\_h\_%' then 3 
       when col like '%\_err' then 2 
       else 1 
      end), 
     col 
+0

我只有一列,只有表末尾有'_err'需要特殊處理。我看到你的意思是根據第一列按多個鍵排序。不過謝謝! –