【发布时间】:2011-09-14 09:24:58
【问题描述】:
我希望在 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 和姓名,以及
0/1 字段指示联系人是否是组 ? 的成员。
我当然可以很容易地获取所有联系人,然后在我的 Adapter 类中很容易地循环并分别查询成员资格,但我想将这两个查询作为一个外部连接查询执行会产生更好的性能。
我可以使用标准的高级字符串投影和ContentResolver.query() 方法来做到这一点吗?还是这种查询需要深入挖掘更直接的 SQL 执行?
【问题讨论】:
标签: android sql left-join android-contacts android-contentresolver