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 子句中"