MySQL按照指定某一列元素(in)的指定的顺序排序方法

2022-08-10 484点热度 0人点赞 0条评论

需求说明

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

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论