首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL FIELD() 函數實現自定義排序:語法、範例與效能分析

     編輯:MySQL 綜合教學

語法

FIELD(str, val1, val2, val3, ...)
-- 回傳 str 在列表中的位置(1-based)
-- 找不到或 str 為 NULL → 回傳 0

實戰範例:指定司機顯示順序

SELECT * FROM driver_log
ORDER BY FIELD(name, 'Suzi', 'Ben', 'Henry');

結果:

rec_idnametrav_datemiles
2Suzi2006-08-29391
7Suzi2006-09-02502
1Ben2006-08-30152
9Ben2006-09-0279
5Ben2006-08-29131
8Henry2006-09-01197
6Henry2006-08-26115
4Henry2006-08-2796
3Henry2006-08-29300
10Henry2006-08-30203

同組內部順序不保證,若需次要排序:

ORDER BY FIELD(name, 'Suzi', 'Ben', 'Henry'), trav_date DESC;

效能與替代方案對比

方案適用場景效能維護性
FIELD()值集固定、< 20 個、臨時查詢全表掃描,無法用索引SQL 寫死,修改需改代碼
CASE WHEN邏輯複雜、需 ELSE同 FIELD()可讀性較好
關聯排序表值集動態、> 20 個、生產環境可走索引,JOIN 效能穩定資料驅動,靈活
ENUM 內部順序欄位本身是 ENUM隱式數值排序DDL 修改麻煩

關聯排序表最佳實踐

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved