1、基本语法
SELECT * FROM 表名 ORDER BY FIELD (字段名, 字段值1, 字段值2, 字段值3, ...)
2、使用场景
假设我们有一个账单表(tb_bill),账单的状态(status)有:CHECKING(对账中)、CHECKED(已对账)、CANCELED(已作废),我们需要按着 对账中 -> 已对账 -> 已作废 的顺序来显示账单,SQL语句如下:
SELECT * FROM tb_bill ORDER BY FIELD (status, 'CHECKING', 'CHECKED', 'CANCELED')
如果,我们还想再根据其他字段排序,例如:按创建时间(create_time)倒序,SQL如下:
SELECT * FROM tb_bill ORDER BY FIELD (status, 'CHECKING', 'CHECKED', 'ANCELED'), create_time DESC
3、缺点
- ORDER BY FIELD 处理大数据的时候在性能上会出现比较大的问题