我真的不明白如何在单一查询中完成这项工作。
问题:
我有一张这样的表
id| phonenumber| message| group_name| datetime
示例数据
1 | 987654321 | "hi" | G1 | xxxxxxx
2 | 987654321 | "hi" | G1 | xxxxxxx
1 | 987145678 | "hello" | G2 | xxxxxxx
我想要做的是查询上面的SqlLite表,以便我需要以datetime
的降序获取特定语音的所有行。这样我就可以将它们放在我的HashMap中,键为group_name
,值为messages
的ArrayList。
HashMap<String, ArrayList<String>> mapper = new HashMap<>();
我正在使用GreenDao Library从SqlLite获取数据,我试过如下
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将其分开遍历每一行?还是有更好的方法吗?
答案 0 :(得分:0)
SQL很简单,只有WHERE
子句和ORDER BY
。
SQL看起来像这样:
select t.*
from t
where t.phone = ?
order by t.datetime desc;
我不确定这会如何转换为您的SQL生成器,但它确实涉及删除GROUP BY
。