按照特定/自定义的顺序查询Sqlite数据库?

3
假设我有一张表,像这样:
ID | 标题 -- | --- 1 | AAA 2 | BBB 3 | CCC 4 | DDD 5 | EEE ...
...
我想执行一个查询,使用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和自定义排序的重复问题。 - Thomas Baruchel
3个回答

6

编辑:

已测试,可行:

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;

0
另一种实现方式(第一种是使用CASE WHEN ... THEN END,如其他答案中已经提到的)是:
ORDER BY ID=4 DESC,
         ID=1 DESC,
         ID=5 DESC

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


这个语句会影响查询时间吗?比如说我需要查询10k个项目,查询速度会受到什么影响吗?谢谢! - dor506

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接