SQLite中的GROUP BY语句

通过ContentResolver.query,或AsyncQueryHandler中的startQuery方法如何加入SQLite中的GROUP BY语句

问题是这样的:

在项目中,需要从消息的数据库中得到每个联系人最新的消息,并且显示到界面上,类似于咱们手机上短信列表那样。那么,在诸多的消息中,如何得到每一个联系人对应的聊天记录呢?只要把每个人对应的聊天记录找到,就可以知道与这个联系人通信的最后一条聊天记录是哪个了。在SQL中,如果数据库中有联系人字段,那么我们就可以用GROUP BY来将属于同一联系人的消息都查询出来了。然而,我需要异步查询,或者通过ContentResolver对象来查询的话,要怎么写各个参数呢?

例如:在AsyncQueryHandler中,startQuery()方法的参数分别为:

int token: 令牌,和onQueryConplete一致;

Object cookies: 要携带的对象;

Uri uri: 要访问数据库的uri;

String[] projection: 要查询的字段集合;

String selection: 查询条件;

String[] selectionArgs: 匹配查询条件中的“?”;

String orderBy: 排序规则。

其中,我们一般是通过uri、selection和selectionArgs来限制查询数据库后要返回的数据的,selection在SQL中,是WHERE后面的语句。那如果我想要加上GROUP BY,要写到哪个参数里面呢?

代码中,我是这么实现的:

String where = “0==0) GROUP BY (“+……;

所以,只要加上“0==0)”,在其后面加上你想要实现的GROUP BY语句就可以啦~~

不过要注意括号哦~~~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180912G1YEIM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券