如何在jooq中生成select max语句



我想将以下SQL语句转换为jooq语法:

select max(table.column) from table group by table.anothercolumn

我试过:

  • dsl.select(table.colum, max())以及
  • DSL.select(table.colum, max())以及
  • dsl.select(table.colum.max())以及
  • DSL.select(table.colum.max())

但与Eclipse相应,这些语法都不正确。。。

如有任何帮助,我们将不胜感激。

使用jOOQ开始时最常见的错误是:

无代码生成

jOOQ手册和其他Stack Overflow问题中的大多数示例都假设您正在使用jOOQ的代码生成器对模式进行逆向工程。这意味着您将在生成的类中生成类似table(更可能是TABLE(的对象。

您需要静态导入所有这些对象,例如使用

import static com.example.generated.Tables.*;

现在,您可以引用静态导入的所有表frmo,以及它们分别来自表的列

没有静态导入DSL.*

最有效使用jOOQ的另一个先决条件是从DSL:静态导入所有方法

import static org.jooq.impl.DSL.*;

这将允许您使用不合格的max(Field)聚合函数。

这两个先决条件都记录在手册中关于如何阅读手册的部分中。它们都是可选的,您可以在没有静态导入的情况下使用jOOQ,并始终完全限定表达式。

工作示例

一旦您设置了代码生成和静态导入,以下查询就会起作用:

DSLContext dsl = DSL.using(connection, dialect);
Result<?> result =
dsl.select(max(TABLE.COLUMN))
.from(TABLE)
.groupBy(TABLE.ANOTHERCOLUMN)
.fetch();

按表从表组中选择最大值(表.列(。另一列

最新更新