使用SQLiteQueryBuilder的子查询

时间:2014-03-02 12:56:33

标签: android database sqlite

我想使用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”;

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()更简单。