2014-07-07 59 views
2

假设我有一张桌子,像这样:按特定/自定义顺序查询Sqlite数据库?

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

我想执行一个查询,使用IN opeator,同时保留在辩论中的顺序

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

例如,如果查询是“选择从some_table其中id在(4,1,5)...(由???序)”,我想,返回光标被归类为4,1,5

这可能吗?怎么样?

+0

[SQLite和定制次序由](HTTPS的可能重复: //stackoverflow.com/questions/3303851/sqlite-and-custom-order-by) –

回答

4

编辑:

测试,工作原理:

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

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

+0

这是语句影响上qeury时间?可以说我需要查询10K项目? qeury速度如何受影响?谢谢! – dor506

0

这样做(第一个与CASE WHEN ... THEN END在其他的答案已经陈述的是)的第二种方式是:

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