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

标签 java sql common-table-expression jooq

我正在使用 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 收到这个错误:

as Select<R> in DerivedColumnList1 cannot be applied to org.jooq.Result<org.jooq.Record1<LocalDate>>

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

搜索让我回到引用的 jOOQ WITH 手册页,它给出了一个相当简单的例子。我一直无法找到一个重要的例子来告诉我应该去那里做什么,我做错了什么或为什么错了。

有人可以在这里为我指明正确的方向吗?

最佳答案

在此处删除此 fetch() 调用:

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

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

关于java - 找不到使用 jOOQ 在 CommonTableExpression 中选择数据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59167061/

相关文章:

mysql - 我找不到在 MySQL 上的学校数据库中实现消息的方法

json - 使用 FOR JSON 和 CTE 并将其存储在变量中

sql - 使用递归和自连接的 Postgresql 查询

java - eclipse安装错误

java - 调用存储过程 iBATIS 时出现异常

php - SQL 查询 - 选择 count(*) 时返回 0

sql-server - 获得超过 1 个递归 CTE 结果集?

javamail-删除横幅图像的附件

java - 字符和数字交替出现的字符串

sql - Postgresql 使用聚合函数时列的最后一个值