我试图让 jOOQ 发出这个(运气不好):
SELECT array_agg(DISTINCT my_field) FROM ...
我最终使用了纯 SQL 字段。
有没有办法做到这一点我想念的?
如果不是,将 .distinct()
方法添加到 Field
可以与任何聚合函数一起使用是否有意义?或创建 Field 而不是 SelectStep 的 DSL.distinct(Field)
- 不确定这是否有所不同。
目前这似乎是通过为每个聚合创建单独的 DSL 方法来实现的:countDistinct
、groupConcatDistinct
、min/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/