【问题标题】:Query Sqlite Database by specific/custom ordering?通过特定/自定义排序查询 Sqlite 数据库?
【发布时间】:2014-08-28 13:13:55
【问题描述】:

假设我有一张桌子,如下所示:

ID |标题
1 | AAA
2 | BBB
3 | CCC
4 | DDD
5 |电子电气设备
...
...

我想使用 IN 运算符执行查询,同时保留 IN 参数的顺序

database.query("some_table", null, ID + " IN("+ idsStr+")", null, null, null, null);

例如,如果查询是“select from some_table where id in (4,1,5) ...(order by???)”,我希望返回的游标按4,1排序, 5

有可能吗?怎么样?

【问题讨论】:

标签: sqlite cursor sql-order-by


【解决方案1】:

第二种方法(第一种方法是CASE WHEN ... THEN END,如其他答案中所述)是:

ORDER BY ID=4 DESC,
         ID=1 DESC,
         ID=5 DESC

【讨论】:

    【解决方案2】:

    我没有测试上面的 user3249477 答案,但假设 SQL 是正确的(看起来没问题),那么 SQLiteDatabase 有一个返回游标的 rawquery 方法。

    database.rawquery("SELECT * FROM books WHERE _id IN(4, 1, 5) ORDER BY CASE _id WHEN '4' THEN 1 WHEN '1' THEN 2 WHEN '5' THEN 3");

    【讨论】:

    • 这个语句对qeury时间有影响吗?假设我需要查询 10k 个项目? qeury速度如何受到影响?谢谢!
    【解决方案3】:

    编辑:

    经过测试,有效:

    SELECT * FROM books WHERE _id IN(4, 1, 5) 
    ORDER BY
    CASE _id
    WHEN '4' THEN 1
    WHEN '1' THEN 2
    WHEN '5' THEN 3
    ELSE 4
    END, _id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多