从SQLite表中查询记录并将其分组



我真的不明白这是如何在单个查询中完成的。

问题:

我有一个这样的表

id| phonenumber| message| group_name| datetime 

示例数据

1 | 987654321 | "hi"    | G1 | xxxxxxx
2 | 987654321 | "hi"    | G1 | xxxxxxx
1 | 987145678 | "hello" | G2 | xxxxxxx

我想做的是以这样一种方式查询上面的sqlite表,我需要按datetime降序获取特定电话号码的所有行。这样我就可以把它们放到我的HashMap中键是group_name值是messages的ArrayList

 HashMap<String, ArrayList<String>> mapper = new HashMap<>();

我正在使用GreenDao库从sqlite中获取数据,我尝试如下

    List<activity> activities = activityDao.queryBuilder().where(new WhereCondition.StringCondition(com.ficean.android.ficean.db.activityDao.Properties.Contact_number.eq(phonenumber) + "GROUP BY group_name")).orderDesc(com.ficean.android.ficean.db.activityDao.Properties.Date_time).build().list();

我设法使用GROUP BY进行上述查询,但它没有列出所有行。我是否必须获取特定数量的所有数据,并根据group_name循环遍历每一行?或者有更好的办法吗?

SQL很简单,只是一个WHERE子句和一个ORDER BY

SQL语句如下:

select t.*
from t
where t.phone = ?
order by t.datetime desc;

我不确定这如何转化为您的SQL生成器,但它确实涉及删除GROUP BY .

相关内容

  • 没有找到相关文章

最新更新