我希望在 Android 上执行以下查询(以伪代码形式):
SELECT C.ID, C.NAME, CASE ISNULL(G.GROUPID,0) = 0 THEN 0 ELSE 1 END INGROUP
FROM CONTACTS C
LEFT JOIN GROUPMEMBERSHIP G ON G.CONTACTID = C.ID AND G.GROUPID = ?
我希望通过默认的 Contacts ContentProvider 选择系统通讯录中所有联系人的 ID 和名称,以及指示联系人是否是 group 成员的 0/1 字段?
。
我当然可以很容易地获得所有联系人,然后在我的 Adapter 类中很容易地循环并分别查询成员资格,但我想将这两个查询作为一个外部连接查询执行会产生更好的性能。
我可以使用标准的高级字符串投影和ContentResolver.query()
方法来做到这一点吗?或者这种查询是否需要深入研究更直接的 SQL 执行?