sqlite 按照IN中的顺序排列

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解决办法

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); 

出来的顺序就是指定的顺序了。。。。

SQLite解决办法

select * from table where id IN (4,3,1,5,6)
ORDER BY 
  CASE ID
    WHEN 4 THEN 0
    WHEN 3 THEN 1
    WHEN 1 THEN 2
    WHEN 5 THEN 3
    WHEN 6 THEN 4
  END

不过尾神说sqlite 这样做的效率太低了 可以做个索引表

    原文作者:dogLin
    原文地址: https://www.jianshu.com/p/75ae552337a7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞