我真的不明白这是如何在单个查询中完成的。
问题:
我有一个这样的表
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
.