gpt4 book ai didi

sql - 在 JOOQ DSL 中使用带有连接别名的 PosgreSQL array_agg

转载 作者:行者123 更新时间:2023-11-29 11:41:10 32 4
gpt4 key购买 nike

我想将此 SQL 查询转换为 JOOQ DSL。

select "p".*, array_agg("pmu") as projectmemberusers
from "Projects" as "p"
join "ProjectMemberUsers" as "pmu" on "pmu"."projectId" = "p"."id"
group by "p"."id";

目前我已经尝试使用 JOOQ 做这样的事情:

val p = PROJECTS.`as`("p")
val pmu = PROJECTMEMBERUSERS.`as`("pmu")
val query = db.select(p.asterisk(), DSL.arrayAgg(pmu))
.from(p.join(pmu).on(p.ID.eq(pmu.PROJECTID)))
.groupBy(p.ID)

这不起作用,因为 DSL.arrayAgg期望类型为 Field<T> 的东西作为输入。

我是 JOOQ 的新手,不是 SQL 专家。非常感谢详细的解释和改进建议。

最佳答案

首先,语法确实有效,在 SQL Fiddle 中检查过:http://sqlfiddle.com/#!17/e45b7/3

但没有详细记录:https://www.postgresql.org/docs/9.5/static/functions-aggregate.html https://www.postgresql.org/docs/current/static/rowtypes.html#ROWTYPES-USAGE

这可能是 jOOQ 目前不支持的原因:https://github.com/jOOQ/jOOQ/blob/master/jOOQ/src/main/java/org/jooq/impl/DSL.java#L16856

目前唯一可用的语法是单个字段:DSL.arrayAgg(pmu.field(1))

关于sql - 在 JOOQ DSL 中使用带有连接别名的 PosgreSQL array_agg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51753861/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com