使用ActiveAndroid从一列中获取唯一值?

时间:2015-01-10 00:17:28

标签: activeandroid

我试图从表格中的单个列中获取所有唯一值。我完全失败了,而且这些文档似乎没有进入足够的深度,而且我从查看来源看到的内容似乎应该有所帮助,但并不是。< / p>

List<Question> questions = new Select().from(Question.class).where("ZCLASSLEVEL = ? ", classLevel).execute();

可以所有所有列。

然而,

List<Question> questions = new Select(columns).from(Question.class).where("ZCLASSLEVEL = ? ", classLevel).execute();

我没有回复任何数据(questions.size()= 0)

String[] columns = { "ZHRSSECTION" };

Select.Column[] columns = { new Select.Column("ZHRSSECTION", "ZHRSSECTION")};

据推测,在Select()之后抛出.distinct().应该只返回唯一值,但我甚至无法获得我感兴趣的单一列返回。

我在这里缺少什么?

谢谢! 好色

2 个答案:

答案 0 :(得分:0)

回答这个问题有点晚了,但问题是因为SQLiteUtils.rawQuery()假设Id列总是在游标结果中。将列String []设置为{Id,ZHRSSECTION},你会没事的。

    List<FooRecord> list = new Select(new String[]{"Id,tagName"}).from(FooRecord.class).execute();

答案 1 :(得分:0)

您应该使用 groupBy() 方法来使用 distinct() 方法。

例如:

List<Question> questions = new Select()
    .distinct()
    .from(Question.class)
    .groupBy("ZCLASSLEVEL")
    .execute();

上面的代码返回一个问题列表,每个ZCLASSLEVEL一个(可能是最后一行)。

然后您可以将ZCLASSLEVEL的唯一值设为

for(Question question: questions){
    int level = question.ZCLASSLEVEL;
    //do something with level.
}