thinkphp按照in查询的结果集顺序排序

 

 

thinkPHP5 ajax提交表单

在项目开发中我们经常用到按照某结果集进行数据查询的场景,下面的分享也是波波遇到的坑儿。我以为数据库查询只要将IN结果集的顺序排好没问题,那么查出来的数据都会按照IN结果集的顺序显示,但事实上并非如此。

关于Mysql数据库按照IN结果集顺序查询显示的解决方法:

方法一:(适用于TP5)

  1. $val = implode(",",$val);//将数组进行转换,重要!!!
  2. $data = Db::name("数据表")->where('字段','IN',$val)->order('field(字段,'.$val.')')->select();

方法二:Mysql原生查询

  1. select * from table where `id` IN (3,6,9,1,2,5,8,7) order by field(id,3,6,9,1,2,5,8,7);
  2. select * from test where `id` in(3,1,5) order by find_in_set(id,'3,1,5');
  3. select * from test where `id` in(3,1,5) order by substring_index('3,1,2',id,1);

上述几种查询方法均测试没有问题,如有疑问,欢迎,算了不用留言了。

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!