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 中,我将存储到对象subQ中Select<?>:
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)
我应该怎么办?
这解决了这个问题:
select().from(TBL1).join(subQ.asTable()).on(TBL1.COL1.eq((Field<DataType>) subQ.field("maxCol")));
Run Code Online (Sandbox Code Playgroud)