JOOQ / SQL如何根据外键选择最小日期

时间:2018-03-05 15:28:51

标签: java sql spring-boot jooq

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

1 个答案:

答案 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);