我有一个名为Foo的表,其中包含3列(id,time,barId),我想从Foo中选择所有字段,其中时间(存储为时间戳)是barId组中的最低字段。例如,如果我有
Id,time,barId
1,10,10,1
2,11am,1
3,10am,2
4,9,9,2
我希望收到第1行和第4行。
目前我正在使用
.select(FOO.ID, FOO.TIME.min, FOO.BAR_ID)
.from(FOO)
.where()
.groupBy(FOO.BAR_ID)
.fetchInto(Foo.class);
我收到一条错误,指出column "foo.id" must appear in the GROUP BY clause or be used in an aggregate function
答案 0 :(得分:1)
我遇到的问题是我没有按照我选择的行进行分组。
工作代码是
.select(FOO.ID, FOO.TIME.min, FOO.BAR_ID)
.from(FOO)
.where()
.groupBy(FOO.ID, FOO.TIME, FOO.BAR_ID)
.fetchInto(Foo.class);