1-09 3,548 views
或许有人会注意过,但我以前真不知道
SQL: select * from table where id IN (3,6,9,1,2,5,8,7);
这样的情况取出来后,其实,id还是按1,2,3,4,5,6,7,8,9,排序的,但如果我们真要按IN里面的顺序排序怎么办?SQL能不能完成?是否需要取回来后再foreach一下?其实mysql就有这个方法
sql: 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);
在thinkphp的解决方法
$data = $model->field('*')->where('id','in','3,6,9,1,2,5,8,7')->orderRaw("find_in_set(id,"3,6,9,1,2,5,8,7")")->select();