开发者社区> 问答> 正文

用jOOQ找不到在CommonTableExpression中选择数据的正确方法

我正在使用jOOQ CommonTableExpression从表中获取不同的周末日期的列表。它是使用多个cte的大型查询中最短的cte。我有在postgres中运行的查询,但在jOOQ中没有正确的查询。

根据WITH的jOOQ手册页:

// Code for creating a CommonTableExpression instance
    name("t1").fields("f1", "f2").as(select(val(1), val("a")));

我试过了:

import org.jooq.DSL.select;

    MyLog lg = MY_LOG.as("lg"); // a table generated by jOOQ.

    CommonTableExpression cteWkend = name("cteWkend")
            .fields("wkend")
            .as(select((lg.WKEND)).distinctOn(lg.WKEND).from(lg).fetch());

正在从intelliJ收到此错误:

因为DerivedColumnList1中的Select 不能应用于org.jooq.Result <org.jooq.Record1 >

看来问题出在.as(select ...)内,并且我在(select ...)和.as()之间的类型不匹配,这期望有所不同。

搜索使我回到引用的jOOQ WITH手册页面,该页面给出了一个非常简单的示例。我一直未能找到一个平凡的例子,向我展示应该去哪里,我在做什么错,或者为什么错。

有人可以在这里指出正确的方向吗?

展开
收起
垚tutu 2019-12-04 16:52:43 931 0
1 条回答
写回答
取消 提交回答
  • #include

    fetch()在此处删除此呼叫:

    CommonTableExpression cteWkend = name("cteWkend")
            .fields("wkend")
            .as(select((lg.WKEND)).distinctOn(lg.WKEND).from(lg) /* .fetch() */);
    
    

    您不希望在将其结果传递到公用表表达式之前执行公用表表达式中的子查询

    2019-12-04 16:52:55
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载