我正在尝试在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”列表?或者我必须忘记准备好的陈述“?” ?
提前感谢您的帮助。搜索
答案 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
清理。