美文网首页java
sqlite 按照IN中的顺序排列

sqlite 按照IN中的顺序排列

作者: dogLin | 来源:发表于2018-03-30 16:06 被阅读352次

    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 这样做的效率太低了 可以做个索引表

    相关文章

      网友评论

        本文标题:sqlite 按照IN中的顺序排列

        本文链接:https://www.haomeiwen.com/subject/ghuicftx.html