我有一个名为Foo的表,其中包含3列(id,time,barId),我想从Foo中选择所有字段,其中,时间(存储为时间戳)是barId组中最低的字段。例如,如果我有
ID,时间,barId
1、10am,1
2,上午11点,1点
3,10am,2
4、9am,2
我希望收到第一行和第四行。
目前我正在使用
.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
最佳答案
我遇到的问题是我没有按选择的行进行分组。
工作代码是
.select(FOO.ID, FOO.TIME.min, FOO.BAR_ID)
.from(FOO)
.where()
.groupBy(FOO.ID, FOO.TIME, FOO.BAR_ID)
.fetchInto(Foo.class);