我试图在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”列表?或者我必须忘记准备好的陈述“?” ?
在此先感谢您的帮助.搜索
解决方法:
不 – 我不知道任何数据库(如Oracle,SQL Server,SQLite,Postgres等)提供您所要求的…
您可以获得的最近解决方案是将ID插入第二个表,然后在IN部分中使用子查询…
MyIDTable hat 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进行清理.
原文地址:https://codeday.me/bug/20190630/1334289.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。