gpt4 book ai didi

android - 将 GROUP BY 与 CursorLoader 结合使用 - Android

转载 作者:太空狗 更新时间:2023-10-29 15:07:03 33 4
gpt4 key购买 nike

我正在尝试从 ContactsContract.CommonDataKinds.Email.CONTENT_URI 表中获取所有 Contacts

使用 CursorLoader 按他们的 ContactIDName 分组。

因此,例如,如果联系人有 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
  1. "DISTINCT" 由 cursorLoader 添加。为什么?
  2. 我知道有多个 "("/")" 标志,这是我发现处理添加 "GROUP_BY" 的最佳方式。任何其他想法都会有所帮助。
  3. 如错误所述,我找不到 "," 附近的问题。

最佳答案

问题在于 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com