假设我有一张桌子,就像这样:
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
有可能吗?如何?
答案 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