於 Mysql 裡使用 Custom Sort

通常在 mysql 下作排序的時候,會用「 ORDER BY 欄位」來排序內容,但這樣的方法的排序的動作只能依其大小來排。假設目前有下面的 table 內容想要顯示,可是球隊內容都會依照其防守位置作排序依據,這時就不能用單純的大小來比較了。 [code lang=“sql”] SELECT * FROM batters ORDER BY 守位; [/code] 結果如下:

守位 名字 1B 潘忠韋 2B 蔣智聰 3B 石志偉 C 陳峰民 CF 黃龍義 DH 陳金鋒 LF 曾豪駒 RF 霸漢 SS 林智勝

可以透過 FIELD 來幫忙,他可以依照傳入的值找出順序,例如: field(欄位,‘spring’,‘summer’,‘fall’,‘winter’),如果傳入值是 winter 的話,他會回傳數字,可以利用這個特性作為排序依據。依上面的例子來說: [code lang=“sql”] SELECT * FROM batters ORDER BY FIELD(守位,‘C’,‘1B’,‘2B’,‘3B’,‘SS’,‘LF’,‘CF’,‘RF’,‘DH’); [/code] 此時結果就會變成:

守位 名字 C 陳峰民 1B 潘忠韋 2B 蔣智聰 3B 石志偉 SS 林智勝 LF 曾豪駒 CF 黃龍義 RF 霸漢 DH 陳金鋒

一定有人說,為什麼剛開始就不設計用數字作為欄位內容,在有些情況之下,如果想在不更動 database 內容的話,即可使用這個方法排序。