Android 中的 GROUP BY 子句(ICS 及以上)

Posted

技术标签:

【中文标题】Android 中的 GROUP BY 子句(ICS 及以上)【英文标题】:GROUP BY clause in Android (ICS and above) 【发布时间】:2012-03-15 17:28:15 【问题描述】:

我了解到,android ICS (https://***.com/questions/8837544/android-ics-sqlite-error) 不再支持 GROUP BY 子句。有人知道改用什么吗?我使用的是ContentProvider,而不是直接查询数据库。

这是一个示例查询,它曾经在低于 ICS 的 Android 版本上运行。任何想法如何重写它?

Cursor cursor = activity.getContentResolver().query(Data.CONTENT_URI, // from
    new String[]  StructuredPostal._ID, StructuredPostal.CITY, StructuredPostal.COUNTRY , // select
    Data.MIMETYPE + "='" + StructuredPostal.CONTENT_ITEM_TYPE + "' AND " 
    + StructuredPostal.CITY + " <> '' "  // where 
    + ") GROUP BY (" + StructuredPostal.CITY 
    , null, // args
    StructuredPostal.CITY + " ASC, " + StructuredPostal.COUNTRY + " ASC"); // sort by

编辑:错误是Caused by: android.database.sqlite.SQLiteException: near "GROUP": syntax error:...

【问题讨论】:

您确定 ICS 不支持 GROUP BY?除了那个问题,我没有看到其他人提到过这个。 大卫,我猜 GROUP BY 是一个 hack,而不是“官方”支持的东西,所以我想这就是为什么我没有看到这方面的特别通知。 Waqas,我粘贴了错误消息。当 ContentProvider 失败时,您认为我可以在 RawQuery 中使用GROUP BY 吗?我怀疑。除此之外,我可以将此内容源使用 RawQuery 吗? 【参考方案1】:

适合我的解决方案:Group By in ContentResolver in Ice Cream Sandwich

不是最优雅的,但确实可以。

【讨论】:

以上是关于Android 中的 GROUP BY 子句(ICS 及以上)的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在具有GROUP BY子句的查询中选择非聚合列,而GROUP BY子句在功能上不依赖于GROUP BY子句中的列?

only_full_group_by : "ORDER BY 子句不在 GROUP BY 子句中"

ORDER BY 子句中的列无效,因为它不包含在聚合函数或 GROUP BY 子句中

Django 查询中的额外 GROUP BY 子句

选择不在 GROUP BY 子句中的列

group by 子句中的 sparkSQL Map 列