2016-07-28 9 views
-2

Ich weiß, dass MySQL-Unterstützung Daten nach DESC oder ASC sortiert, aber die Standard-Sortierregel kann meine Anforderung nicht erfüllen.MySQL-Daten nach benutzerdefinierter Regel sortieren

Kann jemand Ahnung haben, die Daten wie unten in MySQL zu sortieren:

| 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   | 

Das folgende ist das Ergebnis ich brauche:

| 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   | 

ich viele Male versuchen, haben aber kein Ergebnis.

Antwort

1

Die order by kann mehrere Schlüssel annehmen. So, hier ist eine Methode:

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

ich nur eine Spalte haben und nur das Tabellenende mit '_err' mit besonderen Deal brauchen. Ich sehe, dass Sie diese durch mehrere Schlüssel nach der ersten Spalte sortieren. Danke trotzdem! –