通过特定/自定义顺序查询Sqlite数据库?

时间:2014-07-07 22:37:16

标签: sqlite cursor sql-order-by

假设我有一张桌子,就像这样:

ID | TITLE
1 | AAA
2 | BBB
3 | CCC
4 | DDD
5 | EEE
...
...

我想使用IN opeator执行查询,同时保留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

有可能吗?如何?

3 个答案:

答案 0 :(得分:5)

编辑:

经过测试,有效:

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;

答案 1 :(得分:0)

我还没有测试过上面的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");

答案 2 :(得分:0)

第二种方式(第一种方式是CASE WHEN ... THEN END已在其他答案中说明):

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