java - jOOQ 在 PostgreSQL 中选择不同的数组聚合

标签 java sql postgresql jooq

我试图让 jOOQ 发出这个(运气不好):

SELECT array_agg(DISTINCT my_field) FROM ...

我最终使用了纯 SQL 字段。

有没有办法做到这一点我想念的?

如果不是,将 .distinct() 方法添加到 Field 可以与任何聚合函数一起使用是否有意义?或创建 Field 而不是 SelectStep 的 DSL.distinct(Field) - 不确定这是否有所不同。

目前这似乎是通过为每个聚合创建单独的 DSL 方法来实现的:countDistinctgroupConcatDistinctmin/max/sum/avgDistinct

谢谢

最佳答案

从 jOOQ 3.10 开始,将有一个 DSL.arrayAggDistinct() 函数可用: https://github.com/jOOQ/jOOQ/issues/6281

在那之前,只需使用 plain SQL API作为解决方法:

public static <T> Field<T[]> arrayAggDistinct(Field<T> myField) {
    return DSL.field("array_agg(distinct {0})", myField.getArrayDataType(), myField);
}

关于java - jOOQ 在 PostgreSQL 中选择不同的数组聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46292398/

相关文章:

java - 如何在 Assets 内部设置 'folders in other language'?

java - Gradle 排除依赖关系极其困惑

Java HtmlUnit 内存泄漏

sql - Azure SQL Server 无法创建表

sql - 加快检查 CIDR 范围内的 IP 地址成员资格,适用于大型数据集

sql - 如何创建没有循环关系的树表?

Postgresql 模式 INFORMIX 或 INFORMIX_SE

java - 使用 Intellij IDEA 将 Maven 依赖项添加到 XML

mysql - 跨平台 SQL DB API c/c++

postgresql - 为什么 postgres 对待cast和 '::'表达式的方式不同?