我想使用SQLiteQueryBuilder
来构建查询,我知道我可以使用rawQuery
达到该查询,查询有subQuery
,我尝试这样做我没有得到任何错误,但根本没有结果,
查询就像那样
SELECT * FROM TABLE1 WHERE a = (SELECT b FROM TABLE2 WHERE id = 1);
SQLiteQueryBuilder.query(database,null,selection,selectionArgs,null,null,null,null,null);
其中选择是“a =?” 和 selectionArgs is =“SELECT b FROM TABLE2 WHERE id = 1”;
答案 0 :(得分:0)
您可以使用?
并仅为文字绑定args,而不是表达式或子查询。您尝试绑定的子查询实际上绑定为字符串文字,因此查询实际上与
... WHERE a='SELECT b FROM TABLE2 WHERE id=1'
所以不要使用?
。
您可能还需要IN
而不是=
:
SELECT * FROM TABLE1 WHERE a IN (SELECT b FROM TABLE2 WHERE id=1);
在这里,您可以使用?
绑定参数id
:
SELECT * FROM TABLE1 WHERE a IN (SELECT b FROM TABLE2 WHERE id=?);
您可以使用SQLiteQueryBuilder
构建类似的查询,但如上所述,使用rawQuery()
更简单。