我有一个名为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);

10-06 10:17
查看更多