有这样一个场景:
一张表中一个字段为 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 的方法,三个回答都很好,要是币能平分就好啦。