在 MySQL 中,你可以使用 ORDER BY FIELD() 来自定义排序顺序。这个函数允许你指定字段的自定义排序顺序
field() 函数:是将查询的结果集按照指定顺序排序
格式: FIELD(str,str1,str2,str3,…)
什么时候用: 想让某几个特定的字段值放在最后,用field()函数
解释: str是字段名字,字符串str1,str2,str3等等,是该字段的值
函数意思: 匹配到str1,将其放到结果集最后返回
详细解析: 当字段值没有匹配到str1,str2或者str3的时候,按照正常排序;当匹配到这些的时候,会把没有匹配的值放到最前面,匹配到的放到后边,并且以写的顺序排序返回结果集。
**注**
:升序排列会把没匹配到的值放到前面,降序排序会把没匹配到的值放到最后
SELECT
id,
MONTH,
office_code
FROM
`dt_kh_yd_office_task` a
WHERE
a.`status` = '0'
AND a.`month` = '2023-01'
ORDER BY
field( office_code, 'jwbgs', 'djgzb', 'cwb', 'kyglb', 'aqscb', 'rlzyb', 'fzjhb', 'bgs' ) DESC
1、升序没有匹配到的值会放到最前面
2、降序没有匹配到的值会放到最后