作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试从 ContactsContract.CommonDataKinds.Email.CONTENT_URI
表中获取所有 Contacts
使用 CursorLoader
按他们的 ContactID
和 Name
分组。
因此,例如,如果联系人有 2 封电子邮件,我将只获得与该联系人相关的一行。
基本上,它应该是这样的:
SELECT ContactID, Name
FROM Table
GROUP BY ContactID, Name
我的代码:
String filter = ContactsContract.CommonDataKinds.Email.DATA + " NOT LIKE ''))
GROUP BY ((" + ContactsContract.CommonDataKinds.Email.CONTACT_ID + ", display_name";
final static String[] PROJECTION =
{
Utils.hasHoneycomb() ? Contacts.DISPLAY_NAME_PRIMARY : Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Email.CONTACT_ID,
};
return new CursorLoader(getActivity(),
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
ContactsQuery.PROJECTION,
filter,
null,
ContactsQuery.SORT_ORDER);
我收到下一个 SQLite 错误:
"Caused by: android.database.sqlite.SQLiteException: near ",": syntax error: , while compiling: SELECT DISTINCT display_name, contact_id FROM view_data_restricted data WHERE (1 AND mimetype_id = 1) AND ((data1 NOT LIKE '')) GROUP BY ((contact_id, display_name)) ORDER BY sort_key"
所以这是我的查询:
SELECT DISTINCT display_name, contact_id FROM view_data_restricted data
WHERE (1 AND mimetype_id = 1) AND ((data1 NOT LIKE ''))
GROUP BY ((contact_id, display_name)) ORDER BY sort_key
"("/")"
标志,这是我发现处理添加 "GROUP_BY" 的最佳方式。任何其他想法都会有所帮助。","
附近的问题。最佳答案
问题在于 CursorLoader 如何构造您的查询语句。
根据 this :
The GROUP BY clause must follow the conditions in the WHERE clause and must precede the ORDER BY clause if one is used.
不幸的是,如果您将 Selection、Projection 和 SortOrder 作为参数传递,则无法实现此目的。在“Group By”语句中没有地方可以“破解”..
关于android - 将 GROUP BY 与 CursorLoader 结合使用 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21014859/
我是一名优秀的程序员,十分优秀!