其实这是一个误区,SQLite本身没这个函数,order by的时候肯定出错,我的同事之所以想使用这个就是想返回指定顺序的排序而已,想用SQLite实现MySQL的下述指令:
SELECT * FROM tablename WHERE id IN (1,10,8,5) ORDER BY FIND_IN_SET(id, '1,10,8,5')
开始找了半天方法完全没必要,这返回的是php中数组,既然有返回,那不妨将排序的部分放到返回数组之前,将排序后的结果返回即可。
示例如下:
$posts=getPostsByRelated();//直接取出数据,sql 指令为 select rowid,title from post where rowid in (68234,12016,16776,64147)
$orderarray=explode(",","68234,12016,16776,64147");//分割排序的id到数组
$newarray=array();
foreach($posts as $post){
$newarray[array_search($post['rowid'],$orderarray)]=$post;//根据值查找key并赋值给新数组
}
ksort($newarray);//按key排序,此时新数组就是按68234,12016,16776,64147排序后的了
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。
留言