从SQLite表

时间:2016-11-13 13:25:54

标签: android sql sqlite greendao greendao-generator

我真的不明白如何在单一查询中完成这项工作。

问题:

我有一张这样的表

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将其分开遍历每一行?还是有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

SQL很简单,只有WHERE子句和ORDER BY

SQL看起来像这样:

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

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