需求说明
MySQL中select查询出来结果希望按照某个字段的内容且指定的顺序,之前有类似的需求,按照指定内容排序,详见:https://blog.terrynow.com/2021/02/23/sql-order-by-specfic-value/
另一种情况,比如要查一组数据in某一个数组中,但是按照指定数组的顺序排序,例如:
select * from table where id in (1,5,4,3)
我们希望出来的结果,也是按照id给定的顺序:1,5,4,3来排序
实现
MySQL可可以使用order by field来实现,举例如下:
SELECT * FROM table where id in(1,5,4,3) ORDER BY FIELD(id,1,5,4,3)
后续
- order by field不需要配合in来使用,直接可以根据某个字段,根据某些值来排序
- 如果order by field里面的某些值,没有在表的字段中列举出来,这些数据会排在最前面,这个往往不是我们想要的,我们希望没有列出的值得数据排在最后,这里可以变通下,把order by field的值按倒序排一下,然后order by 最后加上desc就可以了,例如上面的例子:order by field(id, 3,4,1,5) desc
文章评论