4

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

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

我想将它与 rawQuery 一起使用,并且我已经在“?”中准备了 SQL。形式,例如:

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

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

提前感谢您的帮助。已搜索

4

1 回答 1

3

不 - 我不知道任何可以满足您要求的数据库(如 Oracle、SQL Server、SQLite、Postgres 等)...

您可以获得的最接近的解决方案是将 ID 插入到第二个表中,然后在IN部分中使用子查询...

MyIDTablehat 2 个字段QNO(只是一个键)和ID(包含您想要的 ID IN...您首先插入 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.

于 2012-04-04T19:57:20.380 回答