2010-09-14 123 views
1

我希望在我的應用程序的 SQliteDatabase上執行以下查詢。SQLite:「IN」比較問題

String sql = "Select col_1,row_id from Table1 where row_id IN(Select 
row_id from Table2 where key = 'key')"; 

我使用SQLiteDataBase類的rawQuery功能的 相同。問題是當內部查詢返回0個對象查詢 運行並返回0結果。但是,當內部查詢返回一個Set時,不會執行 查詢。

我們可以在rawQuery中使用這些嵌套查詢嗎?我在這裏錯過了什麼,我 ?

請幫忙。

謝謝。

回答

1

爲什麼不使用連接?

SELECT Table1.col_1, Table1.row_id FROM Table1 JOIN Table2 ON Table1.row_id = Table2.row_id WHERE key = 'key'; 
+0

我對數據庫不太熟悉,所以請原諒我的無知。我有兩個問題: 1.在空間和內存方面JOIN是否比嵌套查詢好? 2.任何想法爲什麼上述查詢不適用於Android?我在SQlite數據庫瀏覽器上試過了,它可以工作。 – Samuh 2010-09-14 10:15:25

+0

數據庫通常經過優化以運行JOIN。內部大多數查詢優化器會將嵌套查詢轉換爲連接。 沒有任何錯誤消息,我不知道爲什麼當子查詢返回一個集合時不起作用。語法是正確的! – halfdan 2010-09-14 10:29:06

+0

+ 10。謝謝你的回答! – Samuh 2010-09-14 10:44:09