2012-04-04 46 views
4

我想用在何處,例如動態創建列表集合的方式:的Android rawQuery - 是否有使用參數化的「IN」的數據

select * from books where id in (123, 120, 125) and bookCover = 'Hardcover' 

我想與rawQuery使用它,我在「?」中準備了SQL形式,例如:

select * from books here id in (?) and bookCover = ? 

有沒有什麼辦法,如何在選擇的IN子句中放置一個「id」列表?還是我必須忘記準備好的陳述與「?」 ?

在此先感謝您的幫助。搜索

回答

3

不 - 我不知道有什麼DB(如Oracle,SQL服務器,SQLite的,Postgres的等),它提供了你的要求......

你可以得到的最接近的解決方案是插入的ID到第二個表,然後用在IN部分子查詢...

MyIDTable帽子2場QNO(只是一個鍵)和ID(包含在你的IN你想要的ID ...你先插入3行具有相同的QNO和相應的ID ...

INSERT INTO MyIDTable (QNO, ID) VALUES (3, 120); 
INSERT INTO MyIDTable (QNO, ID) VALUES (3, 123); 
INSERT INTO MyIDTable (QNO, ID) VALUES (3, 125); 

然後,你可以做一個SELECT這樣的:

select * from books where id in (SELECT T.ID FROM MyIDTable T WHERE T.QNO = 3) and 
bookCover = 'Hardcover' 

這基本上允許這樣的:

select * from books where id in (SELECT T.ID FROM MyIDTable T WHERE T.QNO = ?) and 
bookCover = ? 

你做尋找一個特定的集ID後,您可以通過DELETE FROM MyIDTable WHERE QNO = 3清理。

+0

嗯,我很害怕這將是答案。我知道,它可以在冬眠的本地查詢中完成,但是......呃,這不是這種情況:-( – premma 2012-04-04 20:12:27

+0

@premma hibernate在幕後基本上是我上面描述的(因爲沒有我知道的數據庫引擎支持這個(請參閱http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Yahia 2012-04-04 20:17:44

+0

@premma請不要忘記將upvote/mark標記爲已接受的有幫助的ansewrs(請參閱http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Yahia 2012-04-04 20:18:32

相關問題