mysql数据库自定义排序sql语句

有这样一个场景:
一张表中一个字段为 type,type有(1,2,3,4,5,6,7,8)
现在要求查询时的排序规则为 先找 4,5,6然后剩下的在按照升降序排。
Sql语句应该如何写?

select * from table
where xxx
order by field(type,5,4,6)
limit 20

试了下这样写只能 使 5、4、6按照要求排序,其它type还是一样乱。
注意:不能把 1-9的具体排序都写出来,要求是 5,4,6,在最前,其它的升降序
求大神指教

 SELECT * FROM table  order by (
    case
     when type=4 then 1 
          when type=5 then 2
        when type=6 then 3
                ELSE 4 END),type ASC;

mysql中order by 可以指定排序https://blog.csdn.net/qq_36340642/article/details/72547495

order by field()用法我也没用过,不过我简单测试了一下

 select * from t_user t order by field(id,6,4,5) desc limit 20;

这样能达到你的目标

原表数据

图片说明

使用该语句查询结果

图片说明

解决了,决定用 order by case when 的方法,三个回答都很好,要是币能平分就好啦。