jOOQ join Select<?> 对象

New*_*bie 5 java mysql sql jooq

我想在 SQL 中执行类似的操作:

SELECT 
  * 
FROM 
  tbl1 t1 
  INNER JOIN 
  (SELECT MAX(col1) as maxCol, col2 FROM tbl1 t1 GROUP BY t1.col2) subQ
  ON t1.col2 = subQ.col2
  AND t1.col1 = subQ.maxCol
Run Code Online (Sandbox Code Playgroud)

在 jOOQ 中,我将存储到对象subQSelect<?>

Select<?> subQ = myDSL.select(DSL.max(TBL1.COL1).as("maxCol"), TBL1.COL2)
                      .from(TBL1)
                      .groupBy(TBL1.COL2);
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何maxCol从中获取列subQ并在其中使用它join?我的join是这样的:

select()
.from(TBL1)
.join(subQ.asTable())
.on(TBL1.COL1.eq(subQ.asTable().field("maxCol")));
Run Code Online (Sandbox Code Playgroud)

我有错误.on()

Field 类型中的方法 eq(String) 不适用于参数 (Field)

我应该怎么办?

New*_*bie 0

这解决了这个问题:

select().from(TBL1).join(subQ.asTable()).on(TBL1.COL1.eq((Field<DataType>) subQ.field("maxCol")));
Run Code Online (Sandbox Code Playgroud)