Mysql在in查询时,使查询结果按in里的集合排序显示

17-07-31 20:53 字数 532 阅读 3661 已编辑

在mysql in 查询时,如果你没加order by排序时,结果可能是按照mysql自认为舒服的排序显示。

在一般的业务下这样没毛病,但是有时候我们想让结果按照我们in()里的数据排序显示。

比如在使用coreseek搜索时,搜索引擎给我们返回了一组id,这组id是按权重排序的,不能再动他们的排序。

但是我们可能要拿着这组id,再查询一次mysql数据库,拼装成适合我们业务的数据集合,但是却发现在in查询之后排序被打乱了,这时候怎么办呢?

废话那么多,可能你也理解我的意思了,直接上代码。

SELECT * FROM `post` WHERE id IN (27,31,29,35,36,37,38,39,40,43,44,45,46,47,50,53,54,55,56,58,59,60,61,63,73,78,79,81,84,85) ORDER BY FIND_IN_SET(id,'27,31,29,35,36,37,38,39,40,43,44,45,46,47,50,53,54,55,56,58,59,60,61,63,73,78,79,81,84,85') LIMIT 0,30

使用FIND_IN_SET可以解决我们的问题

第一个参数是字段名(不加引号) 第二个参数是id集合(加引号)

0人点赞>
关注 收藏 改进 举报
0 条评论
排序方式 时间 投票
快来抢占一楼吧
请登录后发表评论
站长 @ 十七度
文章
384
粉丝
23
喜欢
195
收藏
31
排名 : 1
访问 : 147.29万
私信