我试图让jOOQ发出这个(没有太多运气):
SELECT array_agg(DISTINCT my_field) FROM ...
我最终使用了一个普通的SQL字段。
有没有办法做到这一点,我错过了?
如果没有,将.distinct()
方法添加到Field
可以与任何聚合函数一起使用是否有意义?或者创建一个Field而不是SelectStep的DSL.distinct(Field)
- 不确定是否会产生影响。
这似乎是通过为每个聚合创建单独的DSL方法来实现的:countDistinct
,groupConcatDistinct
,min/max/sum/avgDistinct
等。
由于
答案 0 :(得分:1)
从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);
}