引言

目前正在开发springboot+vue博客项目中的文章浏览量排行榜功能,在开发的过程中遇到了mysql查询出的数据与我传入的数据顺序不一致的问题。

问题发生

我先从redis的zset中获取排行榜由高到低的6篇文章id,然后再在数据库中去查询出这六篇文章的标题。

但是数据库查询执行select * from table_name where column_name in ()的时候,MySql会自动按照主键自增对查询出的顺序进行排序。

这样返回的数据旧就不符合要求了,因为我要的是排好序了的标题,不然无法与排序好的文章id进行对应

问题解决

使用Order by field()

使用如下sql语句,即可将查询后的数据排序为我们传入的in的集合的顺序

SELECT * from  table_name  where column_name in (15,2,7,3,10) order by field   (column_name,15,2,7,3,10);

总结

在开发过程中,总会遇到许多新的问题,只有不断的学习,不断的总结,才能有所收获

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐