Android rawQuery - 有没有办法使用参数化的“IN”来收集数据

时间:2012-04-04 19:50:30

标签: android sql sqlite sql-parametrized-query

我正在尝试在WHERE中使用动态创建的列表,例如:

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

我想在rawQuery中使用它,我在“?”中准备了SQL形式,例如:

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

有什么办法,如何在选择的IN子句中放入“ids”列表?或者我必须忘记准备好的陈述“?” ?

提前感谢您的帮助。搜索

1 个答案:

答案 0 :(得分:3)

不 - 我不知道任何数据库(如Oracle,SQL Server,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清理。