2014-07-07 102 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