我试图从表格中的单个列中获取所有唯一值。我完全失败了,而且这些文档似乎没有进入足够的深度,而且我从查看来源看到的内容似乎应该有所帮助,但并不是。< / 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().
应该只返回唯一值,但我甚至无法获得我感兴趣的单一列返回。
我在这里缺少什么?
谢谢! 好色
答案 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.
}